25
x Modern workflows for JavaScript integration @mitemitreski blog.mitemitreski.com

Java2day 2013 : Modern workflows for javascript integration

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Java2day 2013 : Modern workflows for javascript integration

xModern workflows for JavaScript [email protected]

Page 2: Java2day 2013 : Modern workflows for javascript integration

Application that can be written in JavaScript, will eventually be written in JavaScript.- Atwood’s Law ( Jeff Atwood aka @codinghorror)

Page 3: Java2day 2013 : Modern workflows for javascript integration
Page 4: Java2day 2013 : Modern workflows for javascript integration
Page 5: Java2day 2013 : Modern workflows for javascript integration
Page 6: Java2day 2013 : Modern workflows for javascript integration

How do we manage dependencies?

● Don’t manage them● Just use copy/paste● Obey the framework’s preferred way● Use a build tool

Page 7: Java2day 2013 : Modern workflows for javascript integration

Web Jars<dependency>

<groupId>org.webjars</groupId>

<artifactId>jquery</artifactId>

<version>1.8.2</version>

</dependency>

compile 'org.webjars:jquery:1.8.2'

Page 8: Java2day 2013 : Modern workflows for javascript integration

Tools tools and more tools

Page 9: Java2day 2013 : Modern workflows for javascript integration

Successful programmers are ?

A. Lazy B. DumbC. All aboveD. None

Page 10: Java2day 2013 : Modern workflows for javascript integration

What are you doing to save time?

Page 11: Java2day 2013 : Modern workflows for javascript integration

Pick tools that you will use

Page 12: Java2day 2013 : Modern workflows for javascript integration

Yeoman.io

Tooling workflow for modern JavaScript development

Page 13: Java2day 2013 : Modern workflows for javascript integration

Toolset

Page 14: Java2day 2013 : Modern workflows for javascript integration

● Think of ANT, Maven, Make, Gradle …● Huge ecosystem● 1800 + plugins

Page 15: Java2day 2013 : Modern workflows for javascript integration

module.exports = function(grunt) { grunt.initConfig({ concat: { options: { separator: ';' }, dist: { src: ['src/**/*.js'], dest: 'dist/<%= pkg.name %>.js' } }, watch: { files: ['<%= jshint.files %>'], tasks: ['jshint', 'qunit'] } });}

Gruntfile.js

Page 16: Java2day 2013 : Modern workflows for javascript integration

What’s running the JS?

Page 17: Java2day 2013 : Modern workflows for javascript integration

{

"name": "temp",

"version": "0.0.0",

"dependencies": {},

"devDependencies": {

"grunt": "~0.4.1",

"grunt-autoprefixer": "~0.4.0",

"karma": "~0.10.6",

"karma-ng-html2js-preprocessor": "~0.1.0"

},

"engines": {

"node": ">=0.8.0"

}

..}

Package.json

Page 18: Java2day 2013 : Modern workflows for javascript integration

How are the frontend libs managed?

● Runs over Git● 5000 + packages● Flat hierarchy

Page 19: Java2day 2013 : Modern workflows for javascript integration

{ "name": "myapp", "version": "0.0.0", "dependencies": { "sass-bootstrap": "~3.0.0", "requirejs": "~2.1.8", "modernizr": "~2.6.2", "jquery": "~1.10.2" }, "devDependencies": {}}

Bower.json

Page 20: Java2day 2013 : Modern workflows for javascript integration

Semantic versioning

MAJOR.MINOR.PATCH (2.3.3)

● MAJOR - backward incompatible● MINOR - new features backwards

compatible● PATCH - bugfixes, fully compatible

Page 21: Java2day 2013 : Modern workflows for javascript integration

YO

● Workflow and glue code● Initial project scaffolding● 400 + generators with a lot subsections

Page 22: Java2day 2013 : Modern workflows for javascript integration

What about tests?

● Karma test runner ○ Reporters ○ Test framework support

● Phantom JS

Page 23: Java2day 2013 : Modern workflows for javascript integration

Demo time

> npm search yeoman-generator > npm install -g generator-angular > yo angular

Page 24: Java2day 2013 : Modern workflows for javascript integration

Maven integration

● yeoman-maven-plugin● maven-exec-plugin

+ some maven-asembly

<plugin>

<groupid>org.codehaus.mojo</groupid>

<artifactid>exec-maven-plugin</artifactid>

<version>1.2.1</version>

<executions>

<execution>

<id>some-execution</id>

<phase>compile</phase>

<goals>

<goal>exec</goal>

</goals>

</execution>

</executions>

<configuration>

<executable>yo</executable>

</configuration>

</plugin>

Page 25: Java2day 2013 : Modern workflows for javascript integration

Links

● webjars.org● yeoman.io● gruntjs.com● npmjs.org● karma-runner.github.io● npmjs.org