SlideShare a Scribd company logo
Building a Single
Page App
One page at a time
@nettofarah
@nettofarah
netto@ifttt.com
full stack developer at
IFTTT
http://ifttt.com/jobs
IFTTT
but this talk
is also about
the evolution of S.P.A.
DHTML
java applets
Flash / Flex
GWT
ajax
the .js era
toda vez que o Chaves respira
surge um framework .js novo
E isso não somos nós que
dizemos. São as estatísticas.
</pt-br>
in the rails world
• prototype.js / jquery gem
• rjs (ughhh)
• asset pipeline
• turbo links?
rails asset pipeline
rails + gulp/grunt
I don’t want my app to be
bound by page refreshes
the risks
• rework
• way too many spinning wheels
• the blank page effect
• SEO
DOING IT!
reuse!
• templates
• snippets
• scripts
• build system
reusing your rb/js code
server side rendering
optional, but makes a BIG DIFFERENCE!
mustache.(js|rb)
1 def regular_controller_method
2 @participants = User.last(10)
3 @event = Event.find_by_technology(:ruby)
4 end
the normal way
1 <div>
2 <% if Time.now.saturday? && Time.now.hour > 13 %>
3 yay, Netto is talking about Single Page apps
4 <% else %>
5 Can't wait to see Netto's talk!
6 <% end %>
7
8 <% is_tropical_ruby = @event.name.match(/tropical/i) %>
9 <% is_active = @event.end_date =< Date.today %>
10
11 <% if is_tropical_ruby && is_active %>
12 yay :)
13 <% end %>
14
15 <% @participants.each ... %>
16 # MOAR RUBY!! lol
17 <% end %>
18
19 </div>
1 def api_controller_method
2 participants = User.last(10)
3 event = Event.find_by_technology(:ruby)
4
5 is_nettos_talk = Time.now.saturday? && Time.now.hour > 14
6
7 @h = {
8 participants: users,
9 event: {
10 is_nettos_talk: is_nettos_talk,
11 is_tropical_ruby: event.tropical_rb?,
12 is_active: event.active?
13 }
14 }
15
16 respond_to do |format|
17 format.html
18 format.json { render json: @h.to_json }
19 end
20 end
1 <div>
2 {{#is_nettos_talk}}
3 yay, Netto is talking about Single Page apps
4 {{/is_nettos_talk}}
5
6 {{^is_nettos_talk}}
7 Can't wait to see Netto's talk!
8 I should follow him on twitter: @nettofarah
9 {{/is_nettos_talk}}
10
11 {{#event.is_tropical_ruby}}
12 yay
13 {{/event.is_tropical_ruby}}
14
15 {{#participants}}
16 ... SOME COOL MUSTACHE STUFF
17 {{/participants}}
18 </div>
Presenters?
hogan.js
minify your .mustache
templates and serve with asset-pipeline
https://github.com/leshill/hogan_assets
1 define("hgn!templates/recipe" ,
["hogan"],function(hogan){ return function
render(c,p,i) {
2 var t=this;t.b(i=i||"");t.b("<div>
");if(t.s(t.f("is_nettos_talk",c,p,1),c,p,
0,25,71,"{{ }}")){t.rs(c,p,function(c,p,t){t.b("
yay, Netto is talking about Single Page apps
");});c.pop();}t.b(" ");if(!
t.s(t.f("is_nettos_talk",c,p,1),c,p,1,0,0,"")){t.b("
Can't wait to see Netto's talk! I should follow him
on twitter: @nettofarah ");};t.b("
");if(t.s(t.d("event.is_tropical_ruby",c,p,1),c,p,
0,235,240,"{{ }}")){t.rs(c,p,function(c,p,t){t.b("
yay ");});c.pop();}t.b("
");if(t.s(t.f("participants",c,p,1),c,p,
0,285,315,"{{ }}")){t.rs(c,p,function(c,p,t)
{t.b(" ... SOME COOL MUSTACHE STUFF ");});c.pop();}
t.b(" </div>");return t.fl(); } }
require.js rails
https://github.com/jwhitley/requirejs-rails
• small and reusable components
• load only what you need
1 define('recipe_view', ['ingredient', 'recipeTemplate'],
2 function(Ingredient, recipeTemplate) {
3
4 var RecipeView = function() {
5
6 function render() {
7 var ingredient = new Ingredient({..});
8 var fragment = recipeTemplate.render(ingredient);
9 $(..).html(fragment);
10 }
11
12 ...
13 };
14
15 return RecipeView;
16 }
17 );
legacy routes
config/routes.rb -> app/js/routes.js
https://github.com/pseudomuto/routesjs-rails
reporting
1 // very simplistic example
2
3 window.onerror = function(message, url, lineNumber) {
4 // a rails controller
5 // or some other service
6 $.post('/js-errors', {
7 message: message,
8 url: url,
9 line_number: lineNumber
10 ...
11 });
12 }
testing
the consequences
the positive ones
fast(er) experience
• (potentially) independent deployment strategy
• better loading time and user experience
• decoupled code and test suite
the bad and the ugly
complexity
race conditions
regular web app
initial load
login info
js load event hooks/callbacks
single page (async) app
1 // Regular JS App
2 function Session() {
3 var currentUser = App.User; // this comes from erb
4 function onUserLogIn(callback) {
5 if (currentUser != null) {
6 callback();
7 }
8 }
9 }
1 // Single Page App Code
2 function Session() {
3 var onLogInCallbacks = [];
4 var currentUser;
5
6 function fetchCurrentUser() {
7 $.ajax(...).done(function() {
8 _.each(onLoginCallbacks, function(callback) {
9 callback(currentUser);
10 })
11 });
12 }
13
14 function onUserLogIn(callback) {
15 if (currentUser != null) {
16 callback(currentUser);
17 } else {
18 onLoginCallbacks.push(callback);
19 }
20 }
21 }
Save callback
for later
run callbacks
memory leaks
3 var onLogInCallbacks = [];
4 var currentUser;
5
6 function fetchCurrentSession() {
7 $.ajax(...).done(function() {
8 _.each(onLoginCallbacks,
function(callback) {
9 callback(currentUser);
10 });
11
12 clear(onLoginCallbacks);
13 });
14 }
15
16 function onUserLogIn(callback) {
17 if (currentUser != null) {
18 callback(currentUser);
19 } else {
20 onLoginCallbacks.push(callback);
21 }
cleanup after yourself
do not block the main thread
1 function onUserLogIn(callback) {
2 if (currentUser != null) {
3 setTimeout(callback, 0, currentUser);
4 }
5 }
instance x prototype
learnings
page refreshes are JS
developers best friends
beware of latency
events, callbacks and
promises
Don’t just learn a framework.
Learn JavaScript.
what’s next?
• ifttt.com next gen!
• react.js
• flight.js

More Related Content

What's hot

AngularJS for Java Developers
AngularJS for Java DevelopersAngularJS for Java Developers
AngularJS for Java Developers
Loc Nguyen
 
Mage Titans - Workshop - UI Components
Mage Titans - Workshop - UI ComponentsMage Titans - Workshop - UI Components
Mage Titans - Workshop - UI Components
vkorotun
 
Symfony2 - Request to Response
Symfony2 - Request to ResponseSymfony2 - Request to Response
Symfony2 - Request to Response
Palko Lenard
 
HItchhickers Guide to TypeScript
HItchhickers Guide to TypeScriptHItchhickers Guide to TypeScript
HItchhickers Guide to TypeScript
thebeebs
 
Serverless and React
Serverless and ReactServerless and React
Serverless and React
Marina Miranovich
 
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
DicodingEvent
 
A little respect for MVC part 1 par Gegoire Lhotellier
A little respect for MVC part 1 par Gegoire LhotellierA little respect for MVC part 1 par Gegoire Lhotellier
A little respect for MVC part 1 par Gegoire Lhotellier
CocoaHeads France
 
Polyglot automation - QA Fest - 2015
Polyglot automation - QA Fest - 2015Polyglot automation - QA Fest - 2015
Polyglot automation - QA Fest - 2015
Iakiv Kramarenko
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
CocoaHeads France
 
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
Binary Studio
 
Java script object model
Java script object modelJava script object model
Java script object modelJames Hsieh
 
Up and Running with ReactJS
Up and Running with ReactJSUp and Running with ReactJS
Up and Running with ReactJS
Loc Nguyen
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJS
Tu Hoang
 
Introducing AngularJS
Introducing AngularJSIntroducing AngularJS
Introducing AngularJS
Loc Nguyen
 
Introducing Revel
Introducing RevelIntroducing Revel
Introducing Revel
Zhebr
 
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Zach Lendon
 
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer ReplacementMidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
Zach Lendon
 
A tour of React Native
A tour of React NativeA tour of React Native
A tour of React Native
Tadeu Zagallo
 
Introduction to AJAX In WordPress
Introduction to AJAX In WordPressIntroduction to AJAX In WordPress
Introduction to AJAX In WordPress
Caldera Labs
 

What's hot (20)

AngularJS for Java Developers
AngularJS for Java DevelopersAngularJS for Java Developers
AngularJS for Java Developers
 
Mage Titans - Workshop - UI Components
Mage Titans - Workshop - UI ComponentsMage Titans - Workshop - UI Components
Mage Titans - Workshop - UI Components
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Symfony2 - Request to Response
Symfony2 - Request to ResponseSymfony2 - Request to Response
Symfony2 - Request to Response
 
HItchhickers Guide to TypeScript
HItchhickers Guide to TypeScriptHItchhickers Guide to TypeScript
HItchhickers Guide to TypeScript
 
Serverless and React
Serverless and ReactServerless and React
Serverless and React
 
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
ServiceWorker: Exploring the Core of the Progressive Web App-Bagus Aji Santos...
 
A little respect for MVC part 1 par Gegoire Lhotellier
A little respect for MVC part 1 par Gegoire LhotellierA little respect for MVC part 1 par Gegoire Lhotellier
A little respect for MVC part 1 par Gegoire Lhotellier
 
Polyglot automation - QA Fest - 2015
Polyglot automation - QA Fest - 2015Polyglot automation - QA Fest - 2015
Polyglot automation - QA Fest - 2015
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
 
Java script object model
Java script object modelJava script object model
Java script object model
 
Up and Running with ReactJS
Up and Running with ReactJSUp and Running with ReactJS
Up and Running with ReactJS
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJS
 
Introducing AngularJS
Introducing AngularJSIntroducing AngularJS
Introducing AngularJS
 
Introducing Revel
Introducing RevelIntroducing Revel
Introducing Revel
 
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
 
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer ReplacementMidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
 
A tour of React Native
A tour of React NativeA tour of React Native
A tour of React Native
 
Introduction to AJAX In WordPress
Introduction to AJAX In WordPressIntroduction to AJAX In WordPress
Introduction to AJAX In WordPress
 

Viewers also liked

[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...Plan Politika
 
Parachute procedure slide show
Parachute procedure slide showParachute procedure slide show
Parachute procedure slide showCarli
 
Hti
HtiHti
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...Plan Politika
 
Nothing But Love - My speech to my sister on her wedding day - Journey within...
Nothing But Love - My speech to my sister on her wedding day - Journey within...Nothing But Love - My speech to my sister on her wedding day - Journey within...
Nothing But Love - My speech to my sister on her wedding day - Journey within...
Bilal Jaffery
 
Gaismas
GaismasGaismas
Fluido/Scrive Salesforce for E-sign seminar
Fluido/Scrive Salesforce for E-sign seminarFluido/Scrive Salesforce for E-sign seminar
Fluido/Scrive Salesforce for E-sign seminar
johanhil
 
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Piet Verhoeve
 
Wave pp 01
Wave pp 01Wave pp 01
Wave pp 01
BChange
 
Faria bangla festival 2
Faria bangla festival 2Faria bangla festival 2
Faria bangla festival 2
fariadhbhuiyan
 
[plan politika] Youth movement nowadays
[plan politika] Youth movement nowadays[plan politika] Youth movement nowadays
[plan politika] Youth movement nowadays
Plan Politika
 
Current
CurrentCurrent
Currentiec
 
Presentation1
Presentation1Presentation1
Presentation1
15098
 
Synchronisation de périphériques avec Javascript et PouchDB
Synchronisation de périphériques avec Javascript et PouchDBSynchronisation de périphériques avec Javascript et PouchDB
Synchronisation de périphériques avec Javascript et PouchDB
Frank Rousseau
 
Leverage social media to drive business final
Leverage social media to drive business finalLeverage social media to drive business final
Leverage social media to drive business finalSimoneVersteeg
 
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHMIEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHMiec
 
Guaranteed Successful Projects
Guaranteed Successful ProjectsGuaranteed Successful Projects
Guaranteed Successful Projectsfaruqh
 
2. Arte Ibérico
2. Arte Ibérico2. Arte Ibérico
2. Arte Ibérico
J Luque
 

Viewers also liked (20)

[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
[plan politika] Pemudan dan Politik Indonesia : Ibas, the Next Top Kick Polit...
 
Parachute procedure slide show
Parachute procedure slide showParachute procedure slide show
Parachute procedure slide show
 
Hti
HtiHti
Hti
 
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
[plan politika] Indonesian Youth and Politics : Predicting Indonesian Youth V...
 
Nothing But Love - My speech to my sister on her wedding day - Journey within...
Nothing But Love - My speech to my sister on her wedding day - Journey within...Nothing But Love - My speech to my sister on her wedding day - Journey within...
Nothing But Love - My speech to my sister on her wedding day - Journey within...
 
Gaismas
GaismasGaismas
Gaismas
 
Fluido/Scrive Salesforce for E-sign seminar
Fluido/Scrive Salesforce for E-sign seminarFluido/Scrive Salesforce for E-sign seminar
Fluido/Scrive Salesforce for E-sign seminar
 
Bogomils
BogomilsBogomils
Bogomils
 
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
Pvh2014 01-15 create project (Dumfries) iMinds - icon: creating value through...
 
Wave pp 01
Wave pp 01Wave pp 01
Wave pp 01
 
Faria bangla festival 2
Faria bangla festival 2Faria bangla festival 2
Faria bangla festival 2
 
[plan politika] Youth movement nowadays
[plan politika] Youth movement nowadays[plan politika] Youth movement nowadays
[plan politika] Youth movement nowadays
 
Current
CurrentCurrent
Current
 
Presentation1
Presentation1Presentation1
Presentation1
 
Synchronisation de périphériques avec Javascript et PouchDB
Synchronisation de périphériques avec Javascript et PouchDBSynchronisation de périphériques avec Javascript et PouchDB
Synchronisation de périphériques avec Javascript et PouchDB
 
Leverage social media to drive business final
Leverage social media to drive business finalLeverage social media to drive business final
Leverage social media to drive business final
 
Weekly news 3
Weekly news 3Weekly news 3
Weekly news 3
 
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHMIEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
IEC Orientation first year for MBA,MCA,B. Pharmacy & IHM
 
Guaranteed Successful Projects
Guaranteed Successful ProjectsGuaranteed Successful Projects
Guaranteed Successful Projects
 
2. Arte Ibérico
2. Arte Ibérico2. Arte Ibérico
2. Arte Ibérico
 

Similar to Building a Single Page App: One Page at a Time

OttawaJS - React
OttawaJS - ReactOttawaJS - React
OttawaJS - React
rbl002
 
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.
Visual Engineering
 
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
Codemotion
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
shaojung
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
shaojung
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
shaojung
 
From Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyFrom Back to Front: Rails To React Family
From Back to Front: Rails To React Family
Khor SoonHin
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
Andrew Rota
 
Workshop React.js
Workshop React.jsWorkshop React.js
Workshop React.js
Commit University
 
sMash at May NYPHP UG
sMash at May NYPHP UGsMash at May NYPHP UG
sMash at May NYPHP UG
Project Zero
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
Sagar Nakul
 
Struts,Jsp,Servlet
Struts,Jsp,ServletStruts,Jsp,Servlet
Struts,Jsp,Servlet
dasguptahirak
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet Sagar Nakul
 
The Gist of React Native
The Gist of React NativeThe Gist of React Native
The Gist of React Native
Darren Cruse
 
Ditching JQuery
Ditching JQueryDitching JQuery
Ditching JQuery
howlowck
 
"Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native ""Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native "
FDConf
 
Groovy Ecosystem - JFokus 2011 - Guillaume Laforge
Groovy Ecosystem - JFokus 2011 - Guillaume LaforgeGroovy Ecosystem - JFokus 2011 - Guillaume Laforge
Groovy Ecosystem - JFokus 2011 - Guillaume Laforge
Guillaume Laforge
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned
pgt technology scouting GmbH
 
TPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and FluxTPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and Flux
Jirat Kijlerdpornpailoj
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassSpike Brehm
 

Similar to Building a Single Page App: One Page at a Time (20)

OttawaJS - React
OttawaJS - ReactOttawaJS - React
OttawaJS - React
 
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.
 
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introduction
 
From Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyFrom Back to Front: Rails To React Family
From Back to Front: Rails To React Family
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
 
Workshop React.js
Workshop React.jsWorkshop React.js
Workshop React.js
 
sMash at May NYPHP UG
sMash at May NYPHP UGsMash at May NYPHP UG
sMash at May NYPHP UG
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
 
Struts,Jsp,Servlet
Struts,Jsp,ServletStruts,Jsp,Servlet
Struts,Jsp,Servlet
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
 
The Gist of React Native
The Gist of React NativeThe Gist of React Native
The Gist of React Native
 
Ditching JQuery
Ditching JQueryDitching JQuery
Ditching JQuery
 
"Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native ""Service Worker: Let Your Web App Feel Like a Native "
"Service Worker: Let Your Web App Feel Like a Native "
 
Groovy Ecosystem - JFokus 2011 - Guillaume Laforge
Groovy Ecosystem - JFokus 2011 - Guillaume LaforgeGroovy Ecosystem - JFokus 2011 - Guillaume Laforge
Groovy Ecosystem - JFokus 2011 - Guillaume Laforge
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned
 
TPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and FluxTPSE Thailand 2015 - Rethinking Web with React and Flux
TPSE Thailand 2015 - Rethinking Web with React and Flux
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
 

More from Ivayr Farah Netto

a 8tracks ama o Redis
a 8tracks ama o Redisa 8tracks ama o Redis
a 8tracks ama o Redis
Ivayr Farah Netto
 
Persistência Poliglota na Prática
Persistência Poliglota na PráticaPersistência Poliglota na Prática
Persistência Poliglota na Prática
Ivayr Farah Netto
 
Redis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.comRedis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.com
Ivayr Farah Netto
 
Rails girls
Rails girlsRails girls
Rails girls
Ivayr Farah Netto
 
Away day
Away dayAway day
Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnica
Ivayr Farah Netto
 
Testes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria SaberTestes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria SaberIvayr Farah Netto
 

More from Ivayr Farah Netto (7)

a 8tracks ama o Redis
a 8tracks ama o Redisa 8tracks ama o Redis
a 8tracks ama o Redis
 
Persistência Poliglota na Prática
Persistência Poliglota na PráticaPersistência Poliglota na Prática
Persistência Poliglota na Prática
 
Redis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.comRedis &lt;3 at 8tracks.com
Redis &lt;3 at 8tracks.com
 
Rails girls
Rails girlsRails girls
Rails girls
 
Away day
Away dayAway day
Away day
 
Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnica
 
Testes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria SaberTestes, TDD e Outras Coisas Que Você Deveria Saber
Testes, TDD e Outras Coisas Que Você Deveria Saber
 

Recently uploaded

Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
abdulrafaychaudhry
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
vrstrong314
 

Recently uploaded (20)

Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
 

Building a Single Page App: One Page at a Time