modern frontend engineering

86
Unless otherwise indicated, these slides are © 2013-2015 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ SPRINGONE2GX WASHINGTON, DC Modern Frontend Engineering By Dustin Whittle @dustinwhittle

Upload: spring-io

Post on 08-Jan-2017

2.116 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Modern Frontend Engineering

Unless otherwise indicated, these s l ides are © 2013-2015 Pivotal Software, Inc. and l icensed under a Creat ive Commons Attr ibut ion-NonCommercial l icense: ht tp: / /creat ivecommons.org/ l icenses/by-nc/3.0/

SPRINGONE2GXWASHINGTON, DC

Modern Frontend EngineeringBy Dustin Whittle

@dustinwhittle

Page 2: Modern Frontend Engineering

The web has evolved tremendously in the last decade. In this talk we will dive into the latest tools and

techniques that make for a modern foundation for frontend engineering. We will start with bootstrapping with Yeoman, move into managing dependencies with bower, and finally how to automate best practices with Grunt and Gulp. We will discuss the pros and cons of

modern ui toolkits like Zurb, Bootstrap, and SemanticUI and modern javascript frameworks like React, Angular,

and Ember. We will highlight the latest in css frameworks, javascript frameworks, and why you should

choose the right toolset for complex app or a single page app. When you leave this session you will be

prepared to launch a modern web application in 2015.

Page 3: Modern Frontend Engineering

Dus$nWhi*le• dus$nwhi*le.com

• @dus$nwhi*le

• SanFrancisco,California,USA

• AppDynamics,Kwarter,SensioLabs,Yahoo!,PHPFreaks

• Technologist,Traveler,Pilot,Skier,Diver,Sailor,Golfer

Page 4: Modern Frontend Engineering

Login

Flight Status

Search Flight

Purchase

Mobile

Big data

SOA

NOSQL

Cloud

Agile

Web

Application complexity is exploding

Page 5: Modern Frontend Engineering

You kids have it easy!

Let me explain why…

Page 6: Modern Frontend Engineering

Let’s start with bootstrapping

(you no longer have to write boilerplate)

Page 7: Modern Frontend Engineering
Page 8: Modern Frontend Engineering
Page 9: Modern Frontend Engineering
Page 10: Modern Frontend Engineering

Automate your frontend workflows

Page 11: Modern Frontend Engineering
Page 12: Modern Frontend Engineering
Page 13: Modern Frontend Engineering

npm install -g grunt-cli

Page 14: Modern Frontend Engineering
Page 15: Modern Frontend Engineering
Page 16: Modern Frontend Engineering

npm install -g gulp

Page 17: Modern Frontend Engineering
Page 18: Modern Frontend Engineering

Grunt and Gulp make it easy to incorporate best practices and

automate the tedious parts of web development.

Page 19: Modern Frontend Engineering
Page 20: Modern Frontend Engineering

I like Gulp because it is faster and simpler. Code

over configuration!

Page 21: Modern Frontend Engineering
Page 22: Modern Frontend Engineering

npm install -g bower

Page 23: Modern Frontend Engineering

bower init

Page 24: Modern Frontend Engineering

{ name: 'app', version: '0.0.0', authors: [ 'Dustin Whittle <[email protected]>' ], description: 'a demo app', main: ‘app.js', dependencies: { "jquery": "~2.x", } moduleType: [ 'es6' ], license: 'MIT', homepage: 'http://dustinwhittle.com/', ignore: [ '**/.*', 'node_modules', 'bower_components', 'test', 'tests' ] }

Page 25: Modern Frontend Engineering
Page 26: Modern Frontend Engineering
Page 27: Modern Frontend Engineering
Page 28: Modern Frontend Engineering

npm install -g yo

Page 29: Modern Frontend Engineering
Page 30: Modern Frontend Engineering

npm install -g yo bower grunt-cli gulp

Page 31: Modern Frontend Engineering

npm install -g generator-webapp

Page 32: Modern Frontend Engineering

yo webapp

Page 33: Modern Frontend Engineering
Page 34: Modern Frontend Engineering
Page 35: Modern Frontend Engineering
Page 36: Modern Frontend Engineering

Let's talk about frameworks

Page 37: Modern Frontend Engineering
Page 38: Modern Frontend Engineering

TodoMVC has been called many things including the 'Speed-

dating' and 'Rosetta Stone' of MV* frameworks.

Page 39: Modern Frontend Engineering

git clone https://github.com/tastejs/todomvc

Page 40: Modern Frontend Engineering
Page 41: Modern Frontend Engineering
Page 42: Modern Frontend Engineering
Page 43: Modern Frontend Engineering
Page 44: Modern Frontend Engineering
Page 45: Modern Frontend Engineering
Page 46: Modern Frontend Engineering
Page 47: Modern Frontend Engineering
Page 48: Modern Frontend Engineering
Page 49: Modern Frontend Engineering
Page 50: Modern Frontend Engineering
Page 51: Modern Frontend Engineering
Page 52: Modern Frontend Engineering
Page 53: Modern Frontend Engineering
Page 54: Modern Frontend Engineering
Page 55: Modern Frontend Engineering
Page 56: Modern Frontend Engineering
Page 57: Modern Frontend Engineering
Page 58: Modern Frontend Engineering
Page 59: Modern Frontend Engineering
Page 60: Modern Frontend Engineering
Page 61: Modern Frontend Engineering
Page 62: Modern Frontend Engineering
Page 63: Modern Frontend Engineering
Page 64: Modern Frontend Engineering
Page 65: Modern Frontend Engineering

It is not just web frameworks:

standards, browser testing, email templates, server configs, analytics…

Page 66: Modern Frontend Engineering
Page 67: Modern Frontend Engineering
Page 68: Modern Frontend Engineering
Page 69: Modern Frontend Engineering
Page 70: Modern Frontend Engineering
Page 71: Modern Frontend Engineering
Page 72: Modern Frontend Engineering
Page 73: Modern Frontend Engineering
Page 74: Modern Frontend Engineering

Performance Matters• Treat performance as a feature

• Using the 14kb Rule for instant loading

• Markup management

• Eliminating excess AJAX calls

• Working with and around application cache

• Developing a responsive design + image strategy

• Implementing a good touch-first strategy

• Code management for good production and development experiences

• Using task runners to build and deploy production code

Page 75: Modern Frontend Engineering
Page 76: Modern Frontend Engineering
Page 77: Modern Frontend Engineering

npm install psi

Page 78: Modern Frontend Engineering
Page 79: Modern Frontend Engineering

The protocols are evolving• The limitations of HTTP/1.X forced us to develop various application workarounds

(sharding, concatenation, spriting, inlining, etc.) to optimize performance. However, in the process we’ve also introduced numerous regressions: poor caching, unnecessary downloads, delayed execution, and more.

• HTTP/2 eliminates the need for these hacks and allows us to both simplify our applications and deliver improved performance.

• You should unshard, unconcat, and unsprite your assets

• You should switch from inlining to server push

• Read Ilya Grigorik awesome book on browser performance - http://hpbn.co/http2

Page 80: Modern Frontend Engineering

webpagetest.org

Page 81: Modern Frontend Engineering
Page 82: Modern Frontend Engineering

Questions?

Page 83: Modern Frontend Engineering

FindtheseslidesonSpeakerDeck

h*ps://speakerdeck.com/dus$nwhi*le

Page 84: Modern Frontend Engineering

http://www.appdynamics.com/

Page 85: Modern Frontend Engineering

https://speakerdeck.com/addyosmani/automating-front-end-workflow

Page 86: Modern Frontend Engineering

Unless otherwise indicated, these s l ides are © 2013-2015 Pivotal Software, Inc. and l icensed under a Creat ive Commons Attr ibut ion-NonCommercial l icense: ht tp: / /creat ivecommons.org/ l icenses/by-nc/3.0/ 86

Yeoman + Gulp + Bower = Frontend Automation

Enjoy the rest of SpringOne2Gx.

Learn More. Stay Connected.

@springcentral Spring.io/video