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.


Top Related