Submit Search
Upload
Frontend application architecture, patterns, and workflows
•
Download as PPTX, PDF
•
0 likes
•
315 views
C
Cesar Andreu
Follow
Notes on frontend application architecture, patterns, and workflows.
Read less
Read more
Technology
Report
Share
Report
Share
1 of 33
Download now
Recommended
BaseX user-group-talk XML Prague 2013
BaseX user-group-talk XML Prague 2013
Andy Bunce
Richard Fridrich: Třesení stromem v JavaScriptu
Richard Fridrich: Třesení stromem v JavaScriptu
Develcz
ScalaCache: simple caching in Scala
ScalaCache: simple caching in Scala
Chris Birchall
Mssql to mysql - Anton Ivanov
Mssql to mysql - Anton Ivanov
DrupalCamp Kyiv
Autolab Workshop
Autolab Workshop
Mihir Pandya
Intro to Backbone.js with Rails
Intro to Backbone.js with Rails
Tim Tyrrell
The Django Book CH13 Generating Non-HTML Content
The Django Book CH13 Generating Non-HTML Content
Johnny Wang
Geo script opengeo spring 2013
Geo script opengeo spring 2013
Ilya Rosenfeld
Recommended
BaseX user-group-talk XML Prague 2013
BaseX user-group-talk XML Prague 2013
Andy Bunce
Richard Fridrich: Třesení stromem v JavaScriptu
Richard Fridrich: Třesení stromem v JavaScriptu
Develcz
ScalaCache: simple caching in Scala
ScalaCache: simple caching in Scala
Chris Birchall
Mssql to mysql - Anton Ivanov
Mssql to mysql - Anton Ivanov
DrupalCamp Kyiv
Autolab Workshop
Autolab Workshop
Mihir Pandya
Intro to Backbone.js with Rails
Intro to Backbone.js with Rails
Tim Tyrrell
The Django Book CH13 Generating Non-HTML Content
The Django Book CH13 Generating Non-HTML Content
Johnny Wang
Geo script opengeo spring 2013
Geo script opengeo spring 2013
Ilya Rosenfeld
Jk rubyslava 25
Jk rubyslava 25
Jozef Képesi
Introduction to asynchronous DB access using Node.js and MongoDB
Introduction to asynchronous DB access using Node.js and MongoDB
Adrien Joly
Drupal database Mssql to MySQL migration
Drupal database Mssql to MySQL migration
Anton Ivanov
Clojure - LISP on the JVM
Clojure - LISP on the JVM
Tikal Knowledge
Faster Drupal sites using Queue API
Faster Drupal sites using Queue API
OSInet
Geo servershell
Geo servershell
Jared Erickson
Dynamic SQL in doobie
Dynamic SQL in doobie
chibochibo
Rubyslava + PyVo #48
Rubyslava + PyVo #48
Jozef Képesi
AWS ElasticBeanstalk and Docker
AWS ElasticBeanstalk and Docker
kloia
ES6 Primer
ES6 Primer
roblund
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To Tail
Cliffano Subagio
Streams or Loops? Java 8 Stream API by Niki Petkov - Proxiad Bulgaria
Streams or Loops? Java 8 Stream API by Niki Petkov - Proxiad Bulgaria
HackBulgaria
Using GeoServer with NASA WorldWind
Using GeoServer with NASA WorldWind
Ilya Rosenfeld
ECMAScript 6 and the Node Driver
ECMAScript 6 and the Node Driver
MongoDB
BITS: Introduction to relational databases and MySQL - SQL
BITS: Introduction to relational databases and MySQL - SQL
BITS
BITS: Introduction to relational databases and MySQL - Schema design
BITS: Introduction to relational databases and MySQL - Schema design
BITS
Introduction to Underscore.js
Introduction to Underscore.js
André Faria Gomes
Extending Node.js using C++
Extending Node.js using C++
Kenneth Geisshirt
Mac ruby to the max - Brendan G. Lim
Mac ruby to the max - Brendan G. Lim
ThoughtWorks
MacRuby to The Max
MacRuby to The Max
Brendan Lim
Flux - rethink in design pattern
Flux - rethink in design pattern
Oleg Gomozov
Single-Page Web Application Architecture
Single-Page Web Application Architecture
Eray Arslan
More Related Content
What's hot
Jk rubyslava 25
Jk rubyslava 25
Jozef Képesi
Introduction to asynchronous DB access using Node.js and MongoDB
Introduction to asynchronous DB access using Node.js and MongoDB
Adrien Joly
Drupal database Mssql to MySQL migration
Drupal database Mssql to MySQL migration
Anton Ivanov
Clojure - LISP on the JVM
Clojure - LISP on the JVM
Tikal Knowledge
Faster Drupal sites using Queue API
Faster Drupal sites using Queue API
OSInet
Geo servershell
Geo servershell
Jared Erickson
Dynamic SQL in doobie
Dynamic SQL in doobie
chibochibo
Rubyslava + PyVo #48
Rubyslava + PyVo #48
Jozef Képesi
AWS ElasticBeanstalk and Docker
AWS ElasticBeanstalk and Docker
kloia
ES6 Primer
ES6 Primer
roblund
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To Tail
Cliffano Subagio
Streams or Loops? Java 8 Stream API by Niki Petkov - Proxiad Bulgaria
Streams or Loops? Java 8 Stream API by Niki Petkov - Proxiad Bulgaria
HackBulgaria
Using GeoServer with NASA WorldWind
Using GeoServer with NASA WorldWind
Ilya Rosenfeld
ECMAScript 6 and the Node Driver
ECMAScript 6 and the Node Driver
MongoDB
BITS: Introduction to relational databases and MySQL - SQL
BITS: Introduction to relational databases and MySQL - SQL
BITS
BITS: Introduction to relational databases and MySQL - Schema design
BITS: Introduction to relational databases and MySQL - Schema design
BITS
Introduction to Underscore.js
Introduction to Underscore.js
André Faria Gomes
Extending Node.js using C++
Extending Node.js using C++
Kenneth Geisshirt
Mac ruby to the max - Brendan G. Lim
Mac ruby to the max - Brendan G. Lim
ThoughtWorks
MacRuby to The Max
MacRuby to The Max
Brendan Lim
What's hot
(20)
Jk rubyslava 25
Jk rubyslava 25
Introduction to asynchronous DB access using Node.js and MongoDB
Introduction to asynchronous DB access using Node.js and MongoDB
Drupal database Mssql to MySQL migration
Drupal database Mssql to MySQL migration
Clojure - LISP on the JVM
Clojure - LISP on the JVM
Faster Drupal sites using Queue API
Faster Drupal sites using Queue API
Geo servershell
Geo servershell
Dynamic SQL in doobie
Dynamic SQL in doobie
Rubyslava + PyVo #48
Rubyslava + PyVo #48
AWS ElasticBeanstalk and Docker
AWS ElasticBeanstalk and Docker
ES6 Primer
ES6 Primer
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To Tail
Streams or Loops? Java 8 Stream API by Niki Petkov - Proxiad Bulgaria
Streams or Loops? Java 8 Stream API by Niki Petkov - Proxiad Bulgaria
Using GeoServer with NASA WorldWind
Using GeoServer with NASA WorldWind
ECMAScript 6 and the Node Driver
ECMAScript 6 and the Node Driver
BITS: Introduction to relational databases and MySQL - SQL
BITS: Introduction to relational databases and MySQL - SQL
BITS: Introduction to relational databases and MySQL - Schema design
BITS: Introduction to relational databases and MySQL - Schema design
Introduction to Underscore.js
Introduction to Underscore.js
Extending Node.js using C++
Extending Node.js using C++
Mac ruby to the max - Brendan G. Lim
Mac ruby to the max - Brendan G. Lim
MacRuby to The Max
MacRuby to The Max
Viewers also liked
Flux - rethink in design pattern
Flux - rethink in design pattern
Oleg Gomozov
Single-Page Web Application Architecture
Single-Page Web Application Architecture
Eray Arslan
Unidirectional data flow
Unidirectional data flow
Denis Gorbunov
The Future of Web Application Architectures
The Future of Web Application Architectures
Lucas Carlson
Hybrid and reactive agent architecures
Hybrid and reactive agent architecures
stevekahara
Redux with React Native
Redux with React Native
Dan Jensen
Logic programming a ruby perspective
Logic programming a ruby perspective
Norman Richards
Single Page WebApp Architecture
Single Page WebApp Architecture
Morgan Cheng
Introduction to React Native & Redux
Introduction to React Native & Redux
Barak Cohen
Web application architecture
Web application architecture
Tejaswini Deshpande
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
Cal Henderson
Scalable JavaScript Application Architecture
Scalable JavaScript Application Architecture
Nicholas Zakas
Viewers also liked
(12)
Flux - rethink in design pattern
Flux - rethink in design pattern
Single-Page Web Application Architecture
Single-Page Web Application Architecture
Unidirectional data flow
Unidirectional data flow
The Future of Web Application Architectures
The Future of Web Application Architectures
Hybrid and reactive agent architecures
Hybrid and reactive agent architecures
Redux with React Native
Redux with React Native
Logic programming a ruby perspective
Logic programming a ruby perspective
Single Page WebApp Architecture
Single Page WebApp Architecture
Introduction to React Native & Redux
Introduction to React Native & Redux
Web application architecture
Web application architecture
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
Scalable Web Architectures: Common Patterns and Approaches - Web 2.0 Expo NYC
Scalable JavaScript Application Architecture
Scalable JavaScript Application Architecture
Similar to Frontend application architecture, patterns, and workflows
Web App Prototypes with Google App Engine
Web App Prototypes with Google App Engine
Vlad Filippov
Slickdemo
Slickdemo
Knoldus Inc.
Experiences with Evangelizing Java Within the Database
Experiences with Evangelizing Java Within the Database
Marcelo Ochoa
Module, AMD, RequireJS
Module, AMD, RequireJS
偉格 高
Dart the Better JavaScript
Dart the Better JavaScript
Jorg Janke
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
Dmytro Semenov
Benchx: An XQuery benchmarking web application
Benchx: An XQuery benchmarking web application
Andy Bunce
The State of JavaScript
The State of JavaScript
Domenic Denicola
Javascript ui for rest services
Javascript ui for rest services
Ioan Eugen Stan
Drools & jBPM future roadmap talk
Drools & jBPM future roadmap talk
Mark Proctor
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
lennartkats
Postgres Deployment Automation with Terraform and Ansible
Postgres Deployment Automation with Terraform and Ansible
EDB
Packing for the Web with Webpack
Packing for the Web with Webpack
Thiago Temple
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Аліна Шепшелей
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
Inhacking
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Per Henrik Lausten
nodejs.pptx
nodejs.pptx
Naveen Gayar
Java 9-10 What's New
Java 9-10 What's New
Nicola Pedot
Workshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte I
Visual Engineering
Salesforce Batch processing - Atlanta SFUG
Salesforce Batch processing - Atlanta SFUG
vraopolisetti
Similar to Frontend application architecture, patterns, and workflows
(20)
Web App Prototypes with Google App Engine
Web App Prototypes with Google App Engine
Slickdemo
Slickdemo
Experiences with Evangelizing Java Within the Database
Experiences with Evangelizing Java Within the Database
Module, AMD, RequireJS
Module, AMD, RequireJS
Dart the Better JavaScript
Dart the Better JavaScript
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
Benchx: An XQuery benchmarking web application
Benchx: An XQuery benchmarking web application
The State of JavaScript
The State of JavaScript
Javascript ui for rest services
Javascript ui for rest services
Drools & jBPM future roadmap talk
Drools & jBPM future roadmap talk
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Postgres Deployment Automation with Terraform and Ansible
Postgres Deployment Automation with Terraform and Ansible
Packing for the Web with Webpack
Packing for the Web with Webpack
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
SE2016 BigData Vitalii Bondarenko "HD insight spark. Advanced in-memory Big D...
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)
nodejs.pptx
nodejs.pptx
Java 9-10 What's New
Java 9-10 What's New
Workshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte I
Salesforce Batch processing - Atlanta SFUG
Salesforce Batch processing - Atlanta SFUG
Recently uploaded
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Remote DBA Services
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
apidays
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Anna Loughnan Colquhoun
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Dropbox
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Igalia
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
apidays
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
The Digital Insurer
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
MIND CTI
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
MadyBayot
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
The Digital Insurer
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Andrey Devyatkin
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
rafiqahmad00786416
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
Recently uploaded
(20)
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Frontend application architecture, patterns, and workflows
1.
Frontend Application Architecture, Patterns, and
Workflows César Andreu @CesarAndreu
2.
Treasure Data ● ~2
years ● Full-stack engineer ○ Frontend ○ API
3.
4.
♥ ramen
5.
Goals ● Improve dev
experience ● Learn something new
6.
Application Architecture
7.
Future JavaScript ● ES6,
ES7 ● Write better JavaScript ● Backwards compatible ● Usable today => babeljs.io
8.
Some ES6 features ●
Generators ● Class syntax ● Module system ● Template strings
9.
ES7: Async function async
function getUserFileList (id) { var user = await User.get(id) var fileList = await s3.listObjects({ Bucket: user.bucket }) return fileList.Contents } getUserFileList(1).then(list => { console.log('list', list) })
10.
Builds ● Transpilation ● Debugging ●
Modules ● Assets
11.
12.
Transpilation module: { loaders: [{ loader:
'babel', test: /.(js|jsx)$/, exclude: /node_modules/ }] }
13.
Debugging
14.
Modules ● ES6 ● CommonJS ●
AMD ● globals
15.
Assets // Create <img> var
logo = document.createElement('img') // "/assets/0dcbbaa701328a3c262cfd45869e351f.png" logo.src = require('./logo.png')
16.
Environments ● development ● production ●
staging ● test
17.
DefinePlugin new webpack.DefinePlugin({ ENV: JSON.stringify(process.env.ENV) })
18.
DefinePlugin example // process.env.ENV
= 'production' if (ENV === 'production') // true log('production message') if (ENV === 'development') // false log('development message') // After minification log('production message')
19.
Application Patterns
20.
Dependency Injection ● Use
higher-order functions ● No libraries needed ● Easier to test
21.
// No dependency
injection var fetch = require('fetch') module.exports = function get (id) { return fetch('/resource/' + id) .then(function checkAuth (response) { if (response.status === 401) document.location.refresh() }) }
22.
// Dependency injection module.exports
= function getFactory (params) { var location = params.location var fetch = params.fetch return function get (id) { return fetch('/resource/' + id) .then(function checkAuth (response) { if (response.status === 401) location.refresh() }) } }
23.
DI guidelines ● Don't
overdo it! ● Static? Avoid DI ● Dynamic? Consider DI
24.
Immutability ● Predictable ● Transparent
changes ● Easier to understand
25.
immutable.js var Immutable =
require('immutable') var map1 = Immutable.Map({a:1, b:2, c:3}) var map2 = map1.set('b', 50) map1.get('b') // 2 map2.get('b') // 50
26.
Flux Action Action Dispatcher Store View Unidirectional
data flow
27.
Application Workflows
28.
Node version manager ●
Both node.js and io.js ● No magic https://github.com/creationix/nvm
29.
eslint ● Catch errors
early ● ES6 with babel-eslint ● Cross-platform ● Great editor support
30.
Webpack HMR ● Hot
module replacement ● react-hot-loader ● style-loader
31.
32.
Contact ● César Andreu ●
@CesarAndreu ● github.com/cesarandreu ● cesar@treasure-data.com Fin.
33.
Links ● https://babeljs.io/ ● https://babeljs.io/docs/learn-es6/ ●
https://github.com/lukehoban/ecmascript-asyncawait ● http://webpack.github.io/ ● https://github.com/ryanseddon/source-map/wiki/ ● http://facebook.github.io/immutable-js/ ● https://github.com/creationix/nvm ● http://eslint.org/ ● https://github.com/babel/babel-eslint ● http://gaearon.github.io/react-hot-loader/ ● http://webpack.github.io/docs/hot-module-replacement-with-webpack.html
Download now