modern web application development workflow - eclipsecon us 2014

144
MODERN WEB APPLICATION DEVELOPMENT WORKFLOW

Upload: stephane-begaudeau

Post on 08-May-2015

6.642 views

Category:

Documents


1 download

DESCRIPTION

People often consider that creating a web application is done by creating a bunch of HTML, Javascript and CSS files together in a text editor and uploading them on the web. Well, things have changed and in this presentation, you will see how the workflow used to deliver web applications has evolved over the past few years! We will start by seeing how you can use Yeoman and its generators to kickstart your project. Then you will see how Bower let you manage the dependencies of your project. Downloading the JavaScript and CSS frameworks that you are using for you. After that we will have a look at Chrome Devtools in order to debug and edit our application. We will also see how to use remote debugging to inspect a web application running on a phone or a tablet. Finally we will see how you can set up your whole continuous integration workflow with Grunt. Compilation, static code analysis, unit tests, integration tests, minification, code coverage, you name it. This talk has been presented during EclipseCon North America 2014 in San Francisco

TRANSCRIPT

Page 1: Modern Web Application Development Workflow - EclipseCon US 2014

MODERNWEB APPLICATIONDEVELOPMENTWORKFLOW

Page 2: Modern Web Application Development Workflow - EclipseCon US 2014

FIRST, LET’S LOOK AT THE PAST

Page 3: Modern Web Application Development Workflow - EclipseCon US 2014

HOW WEB APPLICATIONS USED TO BE DONE?

Page 4: Modern Web Application Development Workflow - EclipseCon US 2014

THROW A BUNCH OF HTML FILES

Page 5: Modern Web Application Development Workflow - EclipseCon US 2014

THROW A BUNCH OF HTML FILES

ADD A COUPLE OF CSS FILES

Page 6: Modern Web Application Development Workflow - EclipseCon US 2014

THROW A BUNCH OF HTML FILES

ADD A COUPLE OF CSS FILES

PUT SOME JAVASCRIPT IN ALL THIS

Page 7: Modern Web Application Development Workflow - EclipseCon US 2014

THROW A BUNCH OF HTML FILES

ADD A COUPLE OF CSS FILES

PUT SOME JAVASCRIPT IN ALL THIS

AND CALL IT A DAY...

Page 8: Modern Web Application Development Workflow - EclipseCon US 2014

COME BACK 6 MONTHS LATER

AND TRY TO REMEMBER HOW TO MAINTAIN YOUR CODE

Page 9: Modern Web Application Development Workflow - EclipseCon US 2014
Page 10: Modern Web Application Development Workflow - EclipseCon US 2014

MOVING FORWARD

Page 11: Modern Web Application Development Workflow - EclipseCon US 2014

A NODE.JS WORLD

Page 12: Modern Web Application Development Workflow - EclipseCon US 2014

Node.js

≠ Server-side JavaScript

Page 13: Modern Web Application Development Workflow - EclipseCon US 2014

Node.jsstand alone JavaScript runtime

Page 14: Modern Web Application Development Workflow - EclipseCon US 2014

Node.jsstand alone JavaScript applications

Page 15: Modern Web Application Development Workflow - EclipseCon US 2014

Node.jsstand alone JavaScript applicationscreated by JavaScript developers

Page 16: Modern Web Application Development Workflow - EclipseCon US 2014

Node.jsstand alone JavaScript applicationscreated by JavaScript developersfor JavaScript developers

Page 17: Modern Web Application Development Workflow - EclipseCon US 2014

BRAND NEW WORLD

Page 18: Modern Web Application Development Workflow - EclipseCon US 2014

JAVASCRIPT DEVELOPMENT TOOLS

Page 19: Modern Web Application Development Workflow - EclipseCon US 2014

JAVASCRIPT DEVELOPMENT WORKFLOW

Page 20: Modern Web Application Development Workflow - EclipseCon US 2014

A GOOD DEVELOPMENT WORKFLOW

-HELPS YOU GET STARTED

Page 21: Modern Web Application Development Workflow - EclipseCon US 2014

A GOOD DEVELOPMENT WORKFLOW

-HELPS YOU GET STARTED-MAINTAINS YOUR DEPENDENCIES

Page 22: Modern Web Application Development Workflow - EclipseCon US 2014

A GOOD DEVELOPMENT WORKFLOW

-HELPS YOU GET STARTED-MAINTAINS YOUR DEPENDENCIES-ENFORCES BEST PRACTICES

Page 23: Modern Web Application Development Workflow - EclipseCon US 2014

A GOOD DEVELOPMENT WORKFLOW

-HELPS YOU GET STARTED-MAINTAINS YOUR DEPENDENCIES-ENFORCES BEST PRACTICES-PREPARES YOUR TOOLS

Page 24: Modern Web Application Development Workflow - EclipseCon US 2014

A GOOD DEVELOPMENT WORKFLOW

-HELPS YOU GET STARTED-MAINTAINS YOUR DEPENDENCIES-ENFORCES BEST PRACTICES-PREPARES YOUR TOOLS-FIGHTS REGRESSIONS

Page 25: Modern Web Application Development Workflow - EclipseCon US 2014

A GOOD DEVELOPMENT WORKFLOW

-HELPS YOU GET STARTED-MAINTAINS YOUR DEPENDENCIES-ENFORCES BEST PRACTICES-PREPARES YOUR TOOLS-FIGHTS REGRESSIONS-EASES THE RELEASE PROCESS

Page 26: Modern Web Application Development Workflow - EclipseCon US 2014

HOW TO GET STARTED?

Page 27: Modern Web Application Development Workflow - EclipseCon US 2014
Page 28: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMANBorn in 2012

Various contributors (Employees from Google, Twitter, etc)

Page 29: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN scaffolding

- structure- compilation- static analysis- dependencies management- development tools- unit testing

Page 30: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN download

> npm install -g yo

“-g” global install

Page 31: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMANVarious generators:○ Angular○ Ember○ Backbone

And all the other popular frameworks...

Page 32: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN bootstrapping

You can also use Yeoman to generate an Yeoman generator project

Page 33: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN angular.js generator

> npm install -g generator-angular

Page 34: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN create an Angular project

> yo angular

Page 35: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN select some dependencies

Page 36: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN choose some options

Page 37: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN it creates the project

Page 38: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN it downloads the internet

Page 39: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN it uses some dark magic

Page 40: Modern Web Application Development Workflow - EclipseCon US 2014

Enjoy the view, Yeoman takes care of everything…

Page 41: Modern Web Application Development Workflow - EclipseCon US 2014
Page 42: Modern Web Application Development Workflow - EclipseCon US 2014

What does the result look like?

Page 43: Modern Web Application Development Workflow - EclipseCon US 2014

STRUCTURE

Page 44: Modern Web Application Development Workflow - EclipseCon US 2014

CONTENT

Page 45: Modern Web Application Development Workflow - EclipseCon US 2014

DEPENDENCIES

Page 46: Modern Web Application Development Workflow - EclipseCon US 2014

DEV TOOLS

Page 47: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN evolution over time

> yo angular:controller myController

create the code and its unit test

Page 48: Modern Web Application Development Workflow - EclipseCon US 2014

IT’S MAGIC!and it will be your job to maintain it...

Page 49: Modern Web Application Development Workflow - EclipseCon US 2014

HAPPY?

Page 50: Modern Web Application Development Workflow - EclipseCon US 2014

BUT HOW DOES IT WORK?

Page 51: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN HAS FRIENDS

Page 52: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER

Page 53: Modern Web Application Development Workflow - EclipseCon US 2014
Page 54: Modern Web Application Development Workflow - EclipseCon US 2014

GRUNT

Page 55: Modern Web Application Development Workflow - EclipseCon US 2014
Page 56: Modern Web Application Development Workflow - EclipseCon US 2014

GULP

Page 57: Modern Web Application Development Workflow - EclipseCon US 2014
Page 58: Modern Web Application Development Workflow - EclipseCon US 2014

AND OTHERS

Page 59: Modern Web Application Development Workflow - EclipseCon US 2014

DEPENDENCIES MANAGEMENT

Page 60: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER

Page 61: Modern Web Application Development Workflow - EclipseCon US 2014
Page 62: Modern Web Application Development Workflow - EclipseCon US 2014

BOWERPackage manager for the web

Born in 2012

Created by Twitter and other contributors over time

Page 63: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Download

> npm install -g bower

Page 64: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Find a package

> bower search jquery

Page 65: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Find the versions available

> bower info jquery

Page 66: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Add a specific dependency

> bower install jquery#1.10.2 --save

install jquery and save this new dependency

Page 67: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER runtime dependencies in bower.json

Page 68: Modern Web Application Development Workflow - EclipseCon US 2014

DEPENDENCIES

Page 69: Modern Web Application Development Workflow - EclipseCon US 2014

LOCATION

Page 70: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Add all your dependencies

> bower install

Page 71: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER See your dependencies

> bower list

Page 72: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Package management always comes with its set of problems:

Page 73: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Package management always comes with its set of problems:- how can I create a new package?

Page 74: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Package management always comes with its set of problems:- how can I create a new package?- how can I host a bower repository?

Page 75: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Package management always comes with its set of problems:- how can I create a new package?- how can I host a bower repository?- what kind of exotic tools will I have to use?

Page 76: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Create a bower package

> bower init

Page 77: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host a bower repository

Page 78: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host a bower repository

> git init

Page 79: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host a bower repository

> git init> git add .

Page 80: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host a bower repository

> git init> git add .> git commit -m “Initial commit.”

Page 81: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host a bower repository

> git init> git add .> git commit -m “Initial commit.”> git remote add origin …

Page 82: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host a bower repository

> git init> git add .> git commit -m “Initial commit.”> git remote add origin …> git push origin master

Page 83: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host a bower repository

SVN support has been added with bower 1.3for those who care….

Page 84: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Use bower with Git

> bower install https://myrepository.git

Page 85: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host multiple versions

> git tag -a 1.4 -m 'version 1.4'

> bower install https://myrepository.git#1.4

Page 86: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Host multiple versions

Use semantic versioning to easily let your consumers handle API breakages

Page 87: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Download

> bower install jquery> bower install git://github.com/jquery/jquery.git

Page 88: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Download

> bower install jquery> bower install git://github.com/jquery/jquery.git

How do this work?

Page 89: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Registry

https://github.com/bower/registry

A simple web server listing Git repository URLs

Page 90: Modern Web Application Development Workflow - EclipseCon US 2014

BOWER Register

> bower register myrepository https://…git

> bower install myrepository

Page 91: Modern Web Application Development Workflow - EclipseCon US 2014

BUILD

Page 92: Modern Web Application Development Workflow - EclipseCon US 2014
Page 93: Modern Web Application Development Workflow - EclipseCon US 2014

GRUNT GULP

Page 94: Modern Web Application Development Workflow - EclipseCon US 2014

CONFIGURATION

GULP

CODE

GRUNT

Page 95: Modern Web Application Development Workflow - EclipseCon US 2014

EQUALLY POWERFUL

Page 96: Modern Web Application Development Workflow - EclipseCon US 2014

GRUNT is a bit older so its

ECOSYSTEM is more mature

Page 97: Modern Web Application Development Workflow - EclipseCon US 2014

Grunt and Gulpdevelopment tools dependencies in package.json

>npm install

Page 98: Modern Web Application Development Workflow - EclipseCon US 2014

DEV TOOLS

Page 99: Modern Web Application Development Workflow - EclipseCon US 2014

GRUNT

Page 100: Modern Web Application Development Workflow - EclipseCon US 2014
Page 101: Modern Web Application Development Workflow - EclipseCon US 2014

GRUNT

Configuration in Gruntfile.js

Page 102: Modern Web Application Development Workflow - EclipseCon US 2014

GRUNT gruntfile.js structure

3 parts:-Task loading-Task configuration-Task registration

Page 103: Modern Web Application Development Workflow - EclipseCon US 2014

GRUNT

An example: Static code analysis with JSHINT

Page 104: Modern Web Application Development Workflow - EclipseCon US 2014

GRUNT

Page 105: Modern Web Application Development Workflow - EclipseCon US 2014

HOW DO YOU USE IT?

>grunt

>grunt jshint:all

Page 106: Modern Web Application Development Workflow - EclipseCon US 2014

GULP

Page 107: Modern Web Application Development Workflow - EclipseCon US 2014
Page 108: Modern Web Application Development Workflow - EclipseCon US 2014

GULPConfiguration in Gulpfile.js

Page 109: Modern Web Application Development Workflow - EclipseCon US 2014

GULP gulpfile.js structure

3 parts:- task loading- task configuration- task registration

Page 110: Modern Web Application Development Workflow - EclipseCon US 2014

GULP

Page 111: Modern Web Application Development Workflow - EclipseCon US 2014

GULP launch

> gulp

Page 112: Modern Web Application Development Workflow - EclipseCon US 2014

SOUNDS FAMILIAR?

Page 113: Modern Web Application Development Workflow - EclipseCon US 2014

GULP differences with Grunt

node.js streams (asynchronous by nature)nice and simple apiconcurrent execution with Orchestrator

Page 114: Modern Web Application Development Workflow - EclipseCon US 2014

BUILD TASKS

Page 115: Modern Web Application Development Workflow - EclipseCon US 2014

STATIC ANALYSISgrunt-contrib-jshintgulp-jshint

Detect coding errors in your JavaScript files(Checkstyle-like reports)

Page 116: Modern Web Application Development Workflow - EclipseCon US 2014

RESPONSIVE IMAGESgrunt-responsive-imagesgulp-responsive-images

Produce images at different sizes for responsive websites

Page 117: Modern Web Application Development Workflow - EclipseCon US 2014

COMPRESS IMAGESgrunt-contrib-imagemingulp-imagemin

Compress and optimize images

Page 118: Modern Web Application Development Workflow - EclipseCon US 2014

COFFEESCRIPTgrunt-contrib-coffeegulp-coffee

Compile CoffeeScript source code to JavaScript

Page 119: Modern Web Application Development Workflow - EclipseCon US 2014

SASSgrunt-contrib-sassgulp-sass

Compile SASS to CSS

Page 120: Modern Web Application Development Workflow - EclipseCon US 2014

WHY SASS?- import- extends- function- mixins- variables- compilation errors

Page 121: Modern Web Application Development Workflow - EclipseCon US 2014

MINIFICATIONgrunt-contrib-uglifygulp-uglify

Reduce the size of JavaScript files

Page 122: Modern Web Application Development Workflow - EclipseCon US 2014

CSS TRIMMINGgrunt-uncssgulp-uncss-task

Remove unused CSS rules

Page 123: Modern Web Application Development Workflow - EclipseCon US 2014

TESTING

Page 124: Modern Web Application Development Workflow - EclipseCon US 2014

TESTINGFrameworks: Jasmine, Mocha, QUnitRunner: KarmaCode Coverage: Istanbul

Page 125: Modern Web Application Development Workflow - EclipseCon US 2014

TESTINGHudson/Jenkins integration?

karma-junit-reporterkarma-coverage (Cobertura reports)

Page 126: Modern Web Application Development Workflow - EclipseCon US 2014
Page 127: Modern Web Application Development Workflow - EclipseCon US 2014

CHROME DEVTOOLS

Page 128: Modern Web Application Development Workflow - EclipseCon US 2014

WORKSPACE

Page 129: Modern Web Application Development Workflow - EclipseCon US 2014

SNIPPETS

Page 130: Modern Web Application Development Workflow - EclipseCon US 2014

AUDITS

Page 131: Modern Web Application Development Workflow - EclipseCon US 2014

TIMELINE

Page 132: Modern Web Application Development Workflow - EclipseCon US 2014

REMOTE DEBUGGING

Page 133: Modern Web Application Development Workflow - EclipseCon US 2014

DEMONSTRATION

Murphy’s Law: Anything that can go wrong — will go wrong

Page 134: Modern Web Application Development Workflow - EclipseCon US 2014

BACKUP SLIDES

(if everything failed, you still have some pictures)

Page 135: Modern Web Application Development Workflow - EclipseCon US 2014
Page 136: Modern Web Application Development Workflow - EclipseCon US 2014
Page 137: Modern Web Application Development Workflow - EclipseCon US 2014
Page 138: Modern Web Application Development Workflow - EclipseCon US 2014
Page 139: Modern Web Application Development Workflow - EclipseCon US 2014

KARMA + GRUNT/GULP

Test your application on various devices

Page 140: Modern Web Application Development Workflow - EclipseCon US 2014
Page 141: Modern Web Application Development Workflow - EclipseCon US 2014

TO SUM UP

Page 142: Modern Web Application Development Workflow - EclipseCon US 2014

YEOMAN + BOWER + GRUNT/GULPand their plugins…

=

AWESOME

Page 143: Modern Web Application Development Workflow - EclipseCon US 2014

QUESTIONS?

Page 144: Modern Web Application Development Workflow - EclipseCon US 2014

THANKS!Stéphane BégaudeauTwitter: @sbegaudeauGoogle+: +stephane.begaudeau

The research leading to these results has received funding from the European Union’s Seventh Framework Program (FP7/2007-2013) for CRYSTAL – Critical System Engineering Acceleration Joint Undertaking under grant agreement № 332830 and from specific national programs and/or funding authorities.