SlideShare a Scribd company logo
Warp-Beam-speed
at initial load
Speeding up your JavaScript application
DavidAmend
● JavaScript & Java Frontend
Developer &Architect
● @Dab-Bank: Angular.js, BPMN, OSGi
David.Amend@it-amend.de
That’s me
Client- Server-
VS
http://openmymind.net/2012/5/30/Client-Side-vs-Server-Side-Rendering/
Better User-Experience?
View-Rendering
Topics
1. History of Web-Rendering Techniques
2. The Application Workflow
3. Decision to the best architecture
Process of Rendering-Technologies
Static
HTML
CGI
Scripts
Web-specific
19951989 C,Shell,CGI-Scripts,
Phyton VB-Scripts, Perl ASP, PHP, Ruby,
ColdFusion
Process of Rendering-Technologies
Web-plugins
Web-Frameworks
Server-Driven
~20101998
Applet/Flash,
ActiveX, XAML
Ruby on Rails, .
Net, Wicket, GWT
Node.js based
“JS Everywhere”
Express, Derby, Meteor, OPA, ...
Process of Rendering-Technologies
Today Future
?
?...
● Before
Framework Comparison matters
→ Richness & stability of Frameworks
● Now
Technique & Architecture matters
→ Surpass limitations
● Future
Webtechnologies get more important, HTML-5, ECMA-Script 7
→ Optimized & Fast Development
“MVC”-Code
Architectures
Server or Client rendering ?
Client-Centric
Business-
Logic
Client Server
Render-
Engine
DB
Request
Response
Shared Definition
http://onehungrymind.com/angularjs-dynamic-templates/
Business-
Logic
Client Server
Render-
Engine
Shared-
Definition
DB
DefinesDefines
I18n, View-Templates
UI Session-State on Server
View-State
Definitions
Client Server
Browser
Clicked On Button
Return HTML & pass
JavaScript to be executed
Expensive
- Resources
Less Control over
User-Experience
Flow of Page-Initialization
Load
HTML
Load
Assets
Framework
Init/Bootstrap
Phase
AJAX-calls
Template
Rendering
Replace
HTML
1. 2. 3. 4.
Worst Case Flow
Load
HTML
Load
Assets
Framework
Init/Bootstrap
Phase
AJAX-calls
Template
Rendering
Loading Screen
Replace
HTML
User sees page
in one shot
1. 2. 3. 4.
Worst Case Flow
Load
HTML
Load
Assets
Framework
Init/Bootstrap
Phase
AJAX-calls
Template
Rendering
Loading Screen
Replace
HTML
1. 2. 3. 4.Possible
Flicking
a)
b)
Hack the intialization process
● Minify
● Cache
● Load assets asynchronously
● Load content asynchronously
● Reducing Requests
Faster file loading
Async Loading, splitting files
HTML
Asset
Framework
Bootstrap
Deferred
Ajax &
RenderTemplate
Rendering
Async(e.g. module loader)
Apply Binding
JS
Templ
ate
HTML
Asset
Asset
Client-Only, Single file,
Load
HTML
Load
Assets
Framework
Bootstrap
Deferred
Ajax &
RenderTemplate
Rendering
Concat & precomile to single file
Apply Binding
Combination of ng-init & UIRouter
Grunt.js build:
● Precompile
https://github.com/ericclemmons/grunt-angular-templates
https://github.com/karma-runner/karma-ng-html2js-preprocessor
https://github.com/karlgoldstein/grunt-html2js
● Concat files
Reducing Requests
or
Load Asynchronously
Faster file loading
Situation
Public Private
Slow-Js-Rendering
Non-Blocking
Lazy Template Rendering
<div ng-template=”pizzaTemplate”>
<h2 ng-model=”{{i18n.header}}></h2>
<ul>
<li ng-repeat=”pizza in pizzas”>
</ul>
</div>
● h2 and li render deferred
● Render when data are available, independent
● Render when data changed: Databinding
Less Requests & Non Blocking UI
<html>
<head>
<script>/* Inline Angular.js asset*/</script>
<script>/* Inline async asset loader*/</script>
$script([ 'js/app.js'], function() {
angular.bootstrap(document, ['myApp']); });
</head>
<body>
<div ng-view></div>
</body>
</html>
Client vs Server Templating: Speed up initial load for SPA with Angular as an example
ng-cloak & ng-hide
● ng-cloak
Disables lazy-rendering for all children
nodes
● ng-hide
Replacing of initial HTML
with deferred template-rendered
● No Flicking
Display Initial HTML
→ Performance Boost
Load
HTML
Load
Assets
Framework
Bootstrap
Deferred
Ajax &
RenderTemplate
Rendering
Apply Binding
● Load assets after HTML is loaded
● Will not freeze UI
How to combine Initial HTML with
deferred template Rendering ?
● Share Model Information
● Share HTML within template
● SEO ( Disabled JS support)
Mixture of Client-Server Code
<h1>{{pizza.title}}</h1>
#{for pizza:pizzas}
<li ng-repeat={{pizza}}>
#{pizza.name}
<li>
#{for:end}
● Hard to understand
● No separation
Complete Separation
index.vm, Server side:
<h1>#{pizza.title}</h1>
...
index.html, Client Side:
<h1>{{pizza.title}}</h1>
…
● Separation
● Duplication
Share model Information:
Save in variable
http://mircozeiss.com/how-to-pass-javascript-variables-from-a-server-to-
var model = #{pizzas.toJson()}
● Works with all frameworks
● Simple
● Need to touch logic code
Share model Information:
Separate Service call
http://mircozeiss.com/how-to-pass-javascript-variables-from-a-server-to-
app.get(‘pizzas’), function(request, response){
$scope.pizzas = response;
}
● Clear separation of Data
● No server-side code in client-code
● Additional service call
● Blocking UI
Share model Information:
Separate Service call
http://mircozeiss.com/how-to-pass-javascript-variables-from-a-server-to-
<div ng-init=’#{pizzas.toJSObject()}’>
{{pizza.header}}
</div>
● No need to touch logic
● Executed before Angular.js Bootstrap
● Minimum Server-Templating needed
● Needs Angular assets to be loaded
● Angular.js specific
Render Client-Template
before init-phase
Load
HTML
Load
Assets
Framework
Bootstrap
Deferred
Ajax &
RenderTemplate
Rendering
Apply Binding
Usage of ng-init
Share init HTML within template
Reuse of HTML
within template at Initial State
Situation
Template Engine not rendered, yet
<div>{{pizza.price}}</div>
Reuse of HTML
within template at Initial State
Situation
Template Engine not rendered, yet
<e:div>{{pizza.price}}</e:div>
Reuse of HTML
within template at Initial State
Situation
Template Engine not rendered, yet
<div ng-model={{pizza.price}}></div>
● Reuse of html within
the template for initial state
Client or
Server-Side
Rendering
revised
Client-Only
Server
Client
Data-Service
JSON, XML
Client-Server-Hybrid
http://nerds.airbnb.com/slides-and-video-from-spike-brehms-tech-
Considerations
● Knownledge in team
○ Java or Web-Developers?
● Context of Webapplication
○ Webpage behind Login?
■ Prefetch & Initialize
○ Only used in company or
■ Performance & browser support
can be ignored
○ Public
● Save Money
○ Do not do overegineering
Client-Server-Hybrid:
Same Template Framework
Client WebServer
Template Files
Initial Request
HTML
● e.g. Mustache
Google Closure, Dual,...
● Share template files between Client & Server
Client-Server-Hybrid:
Render JS on Server
Client
Rendering
Engine
WebServer
Initial Request
HTML-String
Identical Client Code
RegisterBindings
● Independant of template engine
● No extra development effort
● Could be Dependant on Browser Node.js
Lessons learned
● Twitter
http://engineering.twitter.com/2012/05/improving-performance-on-twittercom.html
http://www.youtube.com/watch?v=sGpHDHAIpYE
● Yahoo
https://github.com/davglass/nodejs-yui3
● Angular.js 2.0: Announced
http://angularjs.org/
●
● Google, Closure Tools
● Google Apps Script
Hybrid:Executed page in JavaScript Environment
Are in experimental state:
● GWT
● Headless browsers: PhantomJS
● Services: BromBone
● Ruby solutions
● Rendr (Backbone & Handelbars)
http://de.slideshare.net/spikebrehm
● Google Scripts
● Meteor
● Mojito
http://de.slideshare.net/spikebrehm
http://sebgoo.blogspot.de/2013/05/angularjs-and-seo-pre-render-content-on.html
https://speakerdeck.com/seanami/bridging-the-client-side-server-side-divide
Any Questions ?
Client vs Server Templating: Speed up initial load for SPA with Angular as an example
Additonal Slides
Client vs Server Templating: Speed up initial load for SPA with Angular as an example
Adoption
Ways
● By Server-centric
● By Client-centric
● By complete Client-Server Separation
● By sharing same Client-Server Template API
→ How about i18n-texts ?
● By sharing logic between Client-Server
(Validation, DataTransferObjects...)
→ Angular.js as an example
Server or Client rendering ?
ClientServer
Different
Syntax forces
separation
JavaScript, XML:
Reuse of code:
Validation,
DataTransferObjects
Caching
Less Money
For Slow
Devices
Slow Network
Separation
...
Different
Syntax forces
separation
SEO
Initial Load
is x5 faster
Natural
Programming for
Applications:
Controller&View on
the Client machine
Full control
over Client
Rich User
Experience
Use of Data-
Services
(JSON, XML)
● Authentication-Information Request
● i18n Request
Client Only
“Server is Overkill”, Tim Oxley
http://www.youtube.com/watch?v=BgXjJ3aDwtc
“Goodbye Server, Welcome Client”, Sandro Sonntag
http://es.slideshare.net/sandrosonntag/goodby-server-hello-client
Performance Templating
Depending on App
● Profiling Toolshttps://docs.google.com/presentation/d/1ZZfy5zKx8cYSMGoi2QzM3viI6RUEWbV6S98yTfF5i0o/edit?pli=1#slide=id.gb280e77b_099
● Batarang, check yourself
● Bind-Once
https://github.com/Pasvaz/bindonce
● Use Value by Reference
http://orangevolt.blogspot.de/2013/08/superspeed-your-angularjs-apps.html?utm_source=ng-newsletter&utm_campaign=d2ddad458c-
AngularJS_Newsletter_9_3_139_3_2013&utm_medium=email&utm_term=0_fa61364f13-d2ddad458c-86956513
Acceptance Criteria
● Peformance
● Component model
Goals for the View-Part
Software Quality/Features
● Data binding
● Standard supports
● Internationalization
● SEO
● Long term
● Reduce duplication
● Less Development Time
Goals for the View-Part
Want to hide/wrap/ignore
the Web?
Code Generation
Too Abstract Layering
Easy extendable
vs.
Easy combination
of Frameworks
Easy Customizeable
Performance
Optimization?
Angular.js Primary
Nice
Entry
Points
Bad: Different model concepts
Load
HTML
Load
Assets
Framework
Bootstrap
Deferred
Ajax &
RenderTemplate
Rendering
Apply Binding
<script src=”#{locale}.js>
● 3 Different ways to save i18n
Server-Side
templating
static asset.js I18n: within JSON data
Techniques & Webtechnologies
Angular.js possibilities
<div ng-init=”pizzaModel”>
<h2 ng-cloak ng-bind=”{{pizza.header}} ></h2>
<img src=”loading.gif” ng-hide=”true”></img>
<ul ng-hide=”{{doneLoading}}”>
<li ng-repeat=”pizza in pizzas”>
</ul>
</div>
Combination of View-Rendering
DeclarativeImperative
Logic ViewLogic
Object-
Oriented
XML,XSLTHard to merge
Component-Frameworks
Sencha, Dojo,
jQueryUI
Composition
Fits to
HTML/DOM
Always Code-Generation
ViewLogic
Types Of View-
Definition
Drag & Drop / Generation
Drag-&Drop-
Designer
Wavemaker, Oracle Forms...
UI Session-State on Server, Client-
Renderer
http://onehungrymind.com/angularjs-dynamic-
View-State
Definitions
Client Server
Render-
Engine
Clicked On Button
Trigger Rendering of Window
e.g. GWT(Vaadin),
Metawidget,...
Expensive
- Resources
Imperative vs. Declarative
if(condition){
$(‘#pizzaHeader’).hide()
}else{
$(‘#pizzaHeader’).show();
}
vs.
<div ng-hide=”condition”>content</div>
Performance: Flow of Rendering
Load
HTML
Load
Assets
Framework
Bootstrap
Deferred
Ajax &
RenderTemplate
Rendering
Apply Binding
Angular.js
does Lazy
Loading
Template
Rendering
Template
Rendering
Template
Rendering
Types of View Definition
Declarative
Simple String-
Replacement
Bi-Directional
Databindingvs.
e.g. JSP, PHP,
Ruby, ASP
Dojo, Angular,
JSF
Initial state is
smooth
Do not fight the
DOMExpensive !!!
Server-Side:
Expensive
Load All In One Shot/Request
vs.
Lazy/Async Modularized
Loading
e.g. jQuery Mobile
http://ify.io/lazy-loading-in-angularjs/
Declarative
Full Conditions,
Loop, Logic
Support
Logic-Free Templates
vs.
Less as possible
e.g. Handlebars
Read-Logic only
Templating
http://stackoverflow.com/questions/13103050/angularjs-client-side-data-binding-and-server-side-templating
http://mircozeiss.com/how-to-pass-javascript-variables-from-a-server-to-angular/
● http://ziade.org/2013/02/13/fun-with-angularjs-amp-cornice/
● http://blog.thousandeyes.com/improving-end-user-experience-with-angularjs/
● 2.0v (server-side-prerendering, modularized,
compile)
●
● Maintaining?
● Speed?-Initial Load ? Flicker?
● Needed? - SEO, Work without JS?
●
●
Templating 2nd
● http://docs.angularjs.org/api/ng.directive:script
● https://github.com/ericclemmons/grunt-angular-templates
● https://github.com/karlgoldstein/grunt-html2js
● https://github.com/wmluke/grunt-inline-angular-templates (shameless plug)
http://www.bennadel.com/blog/2443-Rendering-DOM-Elements-With-ngRepeat-In-AngularJS.htm
● Angular magically does template rendering of the view
○ Optimization
○ Huge potential of optimization on the client side
○ Optimization of server side rendering is an illusion.
● Async, ng-cloak
● ng-bind vs. {{}}
● class usage disturbs designers
● make the DOM your friend
“80% DOM, 20% logic” ( Misko Hevery)
● Load all in one shot vs load all lazy loaded
● lazy loading in the background (jquery Mobile)
User Experience matters
http://www.w3.org/History/19921103-hypertext/hypertext/WWW/TheProject.
Client vs Server Templating: Speed up initial load for SPA with Angular as an example
Client vs Server Templating: Speed up initial load for SPA with Angular as an example
Links
Lazy Code Loading
http://ify.io/lazy-loading-in-angularjs/
Angular.js Performance improvement
http://orangevolt.blogspot.de/2013/08/superspeed-your-angularjs-apps.html?utm_source=ng-
newsletter&utm_campaign=d2ddad458c-
AngularJS_Newsletter_9_3_139_3_2013&utm_medium=email&utm_term=0_fa61364f13-d2ddad458c-86956513

More Related Content

PDF
Client Side rendering Not so Easy
PDF
Client Vs. Server Rendering
PDF
Server and client rendering of single page apps
PDF
React server side rendering performance
PDF
Isomorphic web application
PDF
Grokking #9: Building a real-time and offline editing service with Couchbase
PDF
The fundamental problems of GUI applications and why people choose React
PDF
Isomorphic React Applications: Performance And Scalability
Client Side rendering Not so Easy
Client Vs. Server Rendering
Server and client rendering of single page apps
React server side rendering performance
Isomorphic web application
Grokking #9: Building a real-time and offline editing service with Couchbase
The fundamental problems of GUI applications and why people choose React
Isomorphic React Applications: Performance And Scalability

What's hot (20)

PDF
Angular 2 vs React
PPTX
Blazor - An Introduction
PPTX
JavaScript Performance (at SFJS)
PPTX
What is Mean Stack Development ?
PDF
AngularJS + React
PDF
Booting up with polymer
PDF
MEAN Stack
PDF
Angular 2 vs React. What to chose in 2017?
PPTX
React js Online Training
PPTX
React Native
PDF
Understanding Page Load / Ziling Zhao (Google)
PDF
React native: building native iOS apps with javascript
PPTX
React Vs AnagularJS
PPTX
Reactjs workshop
PPT
JAVA SCRIPT
PPTX
001. Introduction about React
PPTX
React js Demo Explanation
PDF
React.js - and how it changed our thinking about UI
PPTX
Angular 4
PPTX
Combining Angular and React Together
Angular 2 vs React
Blazor - An Introduction
JavaScript Performance (at SFJS)
What is Mean Stack Development ?
AngularJS + React
Booting up with polymer
MEAN Stack
Angular 2 vs React. What to chose in 2017?
React js Online Training
React Native
Understanding Page Load / Ziling Zhao (Google)
React native: building native iOS apps with javascript
React Vs AnagularJS
Reactjs workshop
JAVA SCRIPT
001. Introduction about React
React js Demo Explanation
React.js - and how it changed our thinking about UI
Angular 4
Combining Angular and React Together
Ad

Similar to Client vs Server Templating: Speed up initial load for SPA with Angular as an example (20)

PPTX
Pros and Cons of developing a Thick Clientside App
PPTX
Angular universal
KEY
20120306 dublin js
PDF
WebApp / SPA @ AllFacebook Developer Conference
PPTX
Client Side Performance for Back End Developers - Cambridge .NET User Group -...
PPTX
Building assets on the fly with Node.js
KEY
20120802 timisoara
PDF
API Prefetching - HTML5DevConf - Oct. 21, 2014
PDF
Hybridmobileapps 130130213844-phpapp02
PDF
Client-side Rendering Vs. Server-side Rendering Vs. Pre-Rendering for Web App...
PDF
Practical Thin Server Architecture With Dojo Peter Svensson
PPTX
Building single page applications
PDF
Why Use Server Side Rendering To Boost Performance and User Experience?
PPTX
Pearls and Must-Have Tools for the Modern Web / .NET Developer
PDF
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
KEY
Optimization of modern web applications
KEY
Javascript Frameworks for Well Architected, Immersive Web Apps
PDF
"A Highly Decoupled Front-end Framework for High Trafficked Web Applications"...
PDF
Javascript Views, Client-side or Server-side with NodeJS
PDF
Angular js mobile jsday 2014 - Verona 14 may
Pros and Cons of developing a Thick Clientside App
Angular universal
20120306 dublin js
WebApp / SPA @ AllFacebook Developer Conference
Client Side Performance for Back End Developers - Cambridge .NET User Group -...
Building assets on the fly with Node.js
20120802 timisoara
API Prefetching - HTML5DevConf - Oct. 21, 2014
Hybridmobileapps 130130213844-phpapp02
Client-side Rendering Vs. Server-side Rendering Vs. Pre-Rendering for Web App...
Practical Thin Server Architecture With Dojo Peter Svensson
Building single page applications
Why Use Server Side Rendering To Boost Performance and User Experience?
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Optimization of modern web applications
Javascript Frameworks for Well Architected, Immersive Web Apps
"A Highly Decoupled Front-end Framework for High Trafficked Web Applications"...
Javascript Views, Client-side or Server-side with NodeJS
Angular js mobile jsday 2014 - Verona 14 may
Ad

More from David Amend (13)

PDF
Componentization css angular
PDF
Angular 2 : learn TypeScript already with Angular 1
PDF
Performance monitoring measurement angualrjs single page apps with phantomas
PDF
Angularjs practical project experiences with javascript development in a bank
PDF
Story about module management with angular.js
PDF
Multi modularized project setup with gulp, typescript and angular.js
PDF
Reasons to migrate to modern web development with JavaScript
PDF
Thin Server Architecture SPA, 5 years old presentation
PDF
Javascript & Angular .js for the enterprise, lessons learned, typescript scal...
PDF
Grunt Advanced Vol 2, Plugins Text I/O with fun
PDF
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
PDF
Gwt widget frameworks_presentation
PDF
Grunt.js and Yeoman, Continous Integration
Componentization css angular
Angular 2 : learn TypeScript already with Angular 1
Performance monitoring measurement angualrjs single page apps with phantomas
Angularjs practical project experiences with javascript development in a bank
Story about module management with angular.js
Multi modularized project setup with gulp, typescript and angular.js
Reasons to migrate to modern web development with JavaScript
Thin Server Architecture SPA, 5 years old presentation
Javascript & Angular .js for the enterprise, lessons learned, typescript scal...
Grunt Advanced Vol 2, Plugins Text I/O with fun
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Gwt widget frameworks_presentation
Grunt.js and Yeoman, Continous Integration

Recently uploaded (20)

PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
AI in Product Development-omnex systems
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
System and Network Administration Chapter 2
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PPTX
Introduction to Artificial Intelligence
PDF
Digital Strategies for Manufacturing Companies
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
AI in Product Development-omnex systems
2025 Textile ERP Trends: SAP, Odoo & Oracle
How Creative Agencies Leverage Project Management Software.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Which alternative to Crystal Reports is best for small or large businesses.pdf
System and Network Administration Chapter 2
ManageIQ - Sprint 268 Review - Slide Deck
Introduction to Artificial Intelligence
Digital Strategies for Manufacturing Companies
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Softaken Excel to vCard Converter Software.pdf
Wondershare Filmora 15 Crack With Activation Key [2025
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PTS Company Brochure 2025 (1).pdf.......
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)

Client vs Server Templating: Speed up initial load for SPA with Angular as an example