MODERN WEB APPLICATION DEVELOPMENT WORKFLOW



Similar documents
Grunt, Gulp & fabs. Build-System and Development-Workflow for modern Web-Applications

Multi-touch app development with modern web tools. David Reagan, Advanced Visualization Lab

Continuous Integration and Delivery. manage development build deploy / release

IBM Digital Experience. Using Modern Web Development Tools and Technology with IBM Digital Experience

ICON UK 2015 node.js for Domino developers. Presenter: Matt White Company: LDC Via

Learning Web App Development

Ultimate Skills Checklist for Your First Front-End Developer Job

Lucy Zhang UI Developer Contact:

Building a Continuous Integration Pipeline with Docker

JUG Münster. Modern Java web development. Thomas Kruse

< IMPACT > START ACCELERATE IMPACT

Hybrid Mobile Application Development

AngularJS for the enterprise

Write Modern Web Apps with the MEAN Stack

Art of Code Front-end Web Development Training Program

JavaScript Programming

Andrew Kovalenko Full Stack Web Developer

Developing multidevice-apps using Apache Cordova and HTML5. Guadalajara Java User Group Guillermo Muñoz Java Developer

Mobile apps development for Joomla

Muzikayise Flynn Buthelezi

SUHAIL DAWOOD Toronto, Ontario

MDT Magazine. Magik on Java TM. perfect match. Get ready to meet Magik on Java. with the release of MDT PE 3.6 ADVANTAGE THROUGH INFORMATION

Hudson configuration manual

Copyright by Object Computing, Inc. (OCI). All rights reserved. AngularJS Testing

MarkLogic Server. Reference Application Architecture Guide. MarkLogic 8 February, Copyright 2015 MarkLogic Corporation. All rights reserved.

Architecture Workshop

Tech Radar - May 2015

Christopher Hill. Web Architect. HTML5, CSS3, Javascript, AngularJS NodeJS (Express), Ruby (Rails), Python (Django)

FormAPI, AJAX and Node.js

Getting Started Developing JavaScript Web Apps. this = that. VT Geospatial Forum 2015

Pentesting Web Frameworks (preview of next year's SEC642 update)

Building emerging technology skills using IBM s Platform as a Service

Building a Drupal 8 Theme. with new-fangled awesomeness

dustin caruso JavaScript / WordPress / UI developer 1230 Parkside Drive South, Reading, PA, USA dustin@dustincaruso.com

Company Overview and Case Studies Byng Systems Limited. All rights reserved.

RIA Technologies Comparison

CoffeeScript and Drupal. Mark Horgan

MEAN/Full Stack Web Development - Training Course Package

White Paper On. Single Page Application. Presented by: Yatin Patel

Learning HTML5 Game Programming

Progressive Enhancement With GQuery and GWT. Ray Cromwell

Preface. Motivation for this Book

Mike Laurel. Web Developer UI / UX Engineer.

Monitor Your Home With the Raspberry Pi B+

WE BUILD ONLINE SYSTEMS USEFUL WEB & MOBILE APPLICATIONS

Mobile development with Apache OFBiz. Ean Schuessler, Brainfood

Deepak Patil (Technical Director) iasys Technologies Pvt. Ltd.

Meister Going Beyond Maven

New Features for Sybase Mobile SDK and Runtime. Sybase Unwired Platform 2.1 ESD #2

HYBRID. Course Packet

Sightly Component Development

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

unisys ClearPath eportal Developer 6.1 Unisys Multi-Device App Developer s Guide March

Introduction to Oracle Mobile Application Framework Raghu Srinivasan, Director Development Mobile and Cloud Development Tools Oracle

Web Developer Toolkit for IBM Digital Experience

Gabriel Iuga. London, United Kingdom Tel: ; Website:

Web Cloud Architecture

MarkLogic 8: Samplestack

Node.JS Appliances on Embedded Linux Devices. Mehmet Fatih Karagöz & Cevahir Turgut

Four Reasons Your Technical Team Will Love Acquia Cloud Site Factory

Operational Decision Manager Worklight Integration

Cross-platform mobile development in Java

Visualizing an OrientDB Graph Database with KeyLines

Power Tools for Pivotal Tracker

Java Development for the Cloud, present and future. Scott Rich Distinguished Engineer, IBM Rational

Extending Tizen Native Framework with Node.js

Improving Magento Front-End Performance

Eclipse Web Tools Platform. Naci Dai (Eteration), WTP JST Lead

2011 Marty Hall An Overview of Servlet & JSP Technology Customized Java EE Training:

JavaScript Testing. Beginner's Guide. Liang Yuxian Eugene. Test and debug JavaScript the easy way PUBLISHING MUMBAI BIRMINGHAM. k I I.

(An) Optimal Drupal 7 Module Configuration for Site Performance JOE PRICE

BUILDING MOBILE WEB APPS WITH PHONEGAP. Matt Zukowski

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application

The Learn-Verified Full Stack Web Development Program

Collaborative Open Market to Place Objects at your Service

CURRICULUM VITAE DAMIR KUSAR

HP ALM Masters 2014 Connected, collaborative mobile application development for the enterprise HP Anywhere

Vincent Gabriel. Summary. Experience. Senior Software Developer at Landmark Network

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

SOA-14: Continuous Integration in SOA Projects Andreas Gies

MAGENTO THEME SHOE STORE

Iskandar Najmuddin. 10 Beaumont Road, London W4 5AP +44 (0)

SYST35300 Hybrid Mobile Application Development

Introducing. Cathal McGloin, VP & General Manager, Mobile Platforms Javier Perez, Director of Product Management and Global Consulting

WebsitesByronBay.com.au. My Website: Scope of Work 4p

AdRadionet to IBM Bluemix Connectivity Quickstart User Guide

FROM BANNER 8 TO BANNER XE. What s the story?

Building and Deploying Web Applications

Migration and Developer Productivity Solutions Cloud, Mobile and Web Development Workshop

MOBILIZING ORACLE APPLICATIONS ERP. An Approach for Building Scalable Mobility Solutions. A RapidValue Solutions Whitepaper

JavaScript By: A. Mousavi & P. Broomhead SERG, School of Engineering Design, Brunel University, UK

Transcription:

MODERN WEB APPLICATION DEVELOPMENT WORKFLOW

FIRST, LET S LOOK AT THE PAST

THROW A BUNCH OF HTML FILES

THROW A BUNCH OF ADD A COUPLE OF HTML FILES CSS FILES

THROW A BUNCH OF ADD A COUPLE OF PUT SOME HTML FILES CSS FILES JAVASCRIPT IN ALL THIS

THROW A BUNCH OF ADD A COUPLE OF PUT SOME HTML FILES CSS FILES JAVASCRIPT IN ALL THIS AND CALL IT A DAY...

COME BACK 6 MONTHS LATER AND TRY TO REMEMBER HOW TO MAINTAIN YOUR CODE

Node.js Server-side JavaScript

Node.js stand alone JavaScript runtime

Node.js stand alone JavaScript runtime using v8, Chrome s JavaScript engine

Node.js stand alone JavaScript applications

Node.js stand alone JavaScript applications created by JavaScript developers

Node.js stand alone JavaScript applications created by JavaScript developers for JavaScript developers

BRAND NEW WORLD

JAVASCRIPT DEVELOPMENT TOOLS

JAVASCRIPT DEVELOPMENT WORKFLOW

A GOOD DEVELOPMENT WORKFLOW -HELPS YOU GET STARTED

A GOOD DEVELOPMENT WORKFLOW -HELPS YOU GET STARTED -MAINTAINS YOUR DEPENDENCIES

A GOOD DEVELOPMENT WORKFLOW -HELPS YOU GET STARTED -MAINTAINS YOUR DEPENDENCIES -ENFORCES BEST PRACTICES

A GOOD DEVELOPMENT WORKFLOW -HELPS YOU GET STARTED -MAINTAINS YOUR DEPENDENCIES -ENFORCES BEST PRACTICES -PREPARES YOUR TOOLS

A GOOD DEVELOPMENT WORKFLOW -HELPS YOU GET STARTED -MAINTAINS YOUR DEPENDENCIES -ENFORCES BEST PRACTICES -PREPARES YOUR TOOLS -FIGHTS REGRESSIONS

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

HOW TO GET STARTED?

YEOMAN Born in 2012 Various contributors (Employees from Google, Twitter, etc)

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

YEOMAN download > npm install -g yo -g global install

YEOMAN Various generators: Angular Ember Backbone And all the other popular frameworks...

YEOMAN angular.js generator > npm install -g generator-angular

YEOMAN create an Angular project > yo angular

Select some dependencies

Choose some options

It creates the project

It downloads half of the internet

It uses some dark magic

Enjoy the view, Yeoman takes care of everything

What does the result look like?

STRUCTURE

CONTENT

DEPENDENCIES

DEV TOOLS

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

HAPPY?

BUT HOW DOES IT WORK?

YEOMAN HAS FRIENDS

BOWER

GRUNT

GULP

AND OTHERS

DEPENDENCIES MANAGEMENT

BOWER

BOWER Package manager for the web Born in 2012 Created by Twitter and other contributors over time

BOWER Download > npm install -g bower

Find a package: bower search

Find more information: bower info

BOWER Add a specific dependency > bower install jquery#1.10.2 --save install jquery and save this new dependency

BOWER runtime dependencies in bower.json

DEPENDENCIES

BOWER Add all your dependencies > bower install

See your dependencies: bower list

BOWER Package management always comes with its set of problems:

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

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

Create a bower package: bower init

BOWER Use bower with Git > bower install https://myrepository.git

BOWER Host multiple versions > git tag -a 1.4 -m 'version 1.4' > bower install https://myrepository.git#1.4

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

BOWER Registry https://github.com/bower/registry A simple web server listing Git repository URLs

BOWER Register > bower register myrepository https:// git > bower install myrepository

BUILD

GRUNT GULP

GRUNT GULP CONFIGURATION CODE

EQUALLY POWERFUL

GRUNT is a bit older so its ECOSYSTEM is more mature

Grunt and Gulp development tools dependencies in package.json >npm install

DEV TOOLS

GRUNT

GRUNT configuration over code grunt.initconfig({ lint: { src: 'src/<%= pkg.name %>.js' }, concat: { src: [ '<banner:meta.banner>', '<file_strip_banner:src/<%= pkg.name %>.js>' ], dest: '<%= pkg.name %>.js' } });

GRUNT Configuration in Gruntfile.js

GRUNT Global install before Grunt 0.4 Updating Grunt cannot break existing projects anymore

GRUNT gruntfile.js structure 3 parts: -Task loading -Task configuration -Task registration

GRUNT An example: Static code analysis with JSHINT

GRUNT

HOW DO YOU USE IT? >grunt >grunt jshint:all

GULP

GULP code over configuration gulp.src('src/main.mycss' ).pipe(stylus()).pipe(rename({ ext: 'css' })).pipe(autoprefixer()).pipe(cssmin()).pipe(header( '/* All Right Reserved */' )).pipe(gulp.dest( 'dist'))

GULP Configuration in Gulpfile.js

GULP gulpfile.js structure 3 parts: - task loading - task configuration - task registration

GULP

GULP differences with Grunt node.js streams (asynchronous by nature) nice and simple api less IO operations

BUILD TASKS

STATIC ANALYSIS grunt-contrib-jshint gulp-jshint Detect coding errors in your JavaScript files

STATIC ANALYSIS Various style of reports (checkstyle, html, etc) Configuration in.jshtinrc

MINIFICATION grunt-contrib-uglify gulp-uglify Reduce the size of JavaScript files

CSS TRIMMING grunt-uncss gulp-uncss-task Remove unused CSS rules

TESTING Frameworks: Jasmine & QUnit Runner: Karma Code Coverage: Istanbul

LIVE RELOAD grunt-contrib-watch gulp-livereload Reload automatically the web application if some files have been changed

WORKFLOW init concat jshint min unit server endtoend watch

Orion Eclipse project Introduced in 2011 in the Eclipse Foundation

Orion Two versions: Jetty or Node.js

Orion npm install orion node node_modules/orion/server.js /projectpath

PROJECTS MANAGEMENT

EDITOR

FIRST CLASS GIT SUPPORT

SEARCH

PLUGINS

READY TO DEPLOY

DOCKER SUPPORT SOON

WHAT ABOUT ECLIPSE?

Back-end Lot of tooling for Java development Jetty, EclipseLink, Webtools, etc

Front-end...

WHAT ABOUT OTHERS?

Back-end Lot of tooling for Java development Jetty, EclipseLink, Webtools, etc

TO SUM UP

THANKS! Stéphane Bégaudeau Twitter: @sbegaudeau Google+: +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.