the javascript toolkit 2.0

39
THE JAVASCRIPT TOOLKIT An attempt to organize the recent explosion of Javascript based technologies and frameworks into a coherent toolkit to be used by a web application developer. 1 2.0

Upload: marcos-vinicius-santos

Post on 08-Sep-2014

6.939 views

Category:

Technology


0 download

DESCRIPTION

Version 2.0. This is an attempt by some colleagues and I to organize the recent explosion of Javascript based technologies and frameworks into a coherent toolkit to be used by a web application developer. After some time discussing and studying some of the technologies we'd like to include in this toolkit, we realized that more important that the tool itself, is the motivation that is behind that tool

TRANSCRIPT

Page 1: The Javascript Toolkit 2.0

THE JAVASCRIPT TOOLKIT

An attempt to organize the recent explosion of Javascript based technologies and frameworks into a coherent toolkit to be used by a web application developer.

1

2.0

Page 2: The Javascript Toolkit 2.0

NEED MOTIVATION TOOLS

ScaffoldSeveral tools. Several ways. Several Practices. Need to

organize, and give some good foundation - best practices, good design.

yeoman, Seed Projects, Html5Boilerplate, bootstraps

(e.g. Twitter Bootstrap)

Build / Automation Lots of tasks to execute. Compile. Test. Minify. Concat. Etc.grunt gulp, broccoli,

component, ...ake's (e.g. Make, Rake, etc.)

Automation Utilities Tasks that can be put in build the pipeline.

minify, uglify, lint, jshint, watch

Dependency Management

Applications are getting complex. They rely on several other libraries and frameworks. bower, component, NPM

Dynamic Loading Big projects are split among several pieces of js for the sake of modularization. No all of them should be loaded at the same time. require, curl, amd.js, async.js

Javascript Preprocessor

The way you organize code in development time is different the way you publish your code. Need to do some processing in your

javascript files before using them.browserift, webpack

Application Applications on web are getting complex, need for frameworks that support app development.

angular, backbone, ember, knockout

Application Utilities

Several application features that can be necessary (e.g. routing) page, director, crossroads

2

Page 3: The Javascript Toolkit 2.0

NEED MOTIVATION TOOLS

Test Runner Execute and visualize test results karma, saucelabs

Test Framework Write tests jasmine, mocha, qunit

Test End to End Write tests for the whole application flowprotractor, casperjs,

nightwatch.js, watir webdriver

Test Support Support tests and helpers phantomjs, zombie.js, sinon, chai

Dom UtilitiesDOM selection and maniputation, some auxiliary

functions, need for utilities that make work simple (and cross-browser)

jquery, zepto, polymer, prototype

JS Utilities Clean code, functional programming style, reactive programming features, helpers and utilities

lodash, underscore, promise, fn.js, q.js, bacons.js, sugar.js,

chance.js, moment.js, micro.js

CI Continuous integration, continuous delivery, continuous deployment

Any! (e.g. travis ci, jenkins, concrete, semaphore, go, snap)

LanguageHave a syntactic sugar element, or even completelly

different syntax (that in the end turn into javascript to run in the browser)

coffeescript, clojurescript, typescript 3

Page 4: The Javascript Toolkit 2.0

4

WHAT TOOLS

CSS Preprocessors sass, less

Preprocessors Libs compass, bourbon

CSS Helpers susy, zenGrids, neat, normalize, modernizr, flexbox

CSS Frameworks boostrap, foundation, skeleton

Page 5: The Javascript Toolkit 2.0

Let’s talk about this needs,

And take a look at some tools

5

Page 6: The Javascript Toolkit 2.0

SCAFFOLD

6

Several tools. Several ways.

Several Practices. Need to

organize, and give some good

foundation - best practices,

good design.

Page 7: The Javascript Toolkit 2.0

7

bootstraps seed projects

Page 8: The Javascript Toolkit 2.0

AUTOMATION

8

Lots of tasks to execute. Compile. Test. Minify. Concat. Uglify. Etc.

Page 9: The Javascript Toolkit 2.0

9

github.com/broccolijs/broccoli

…ake’s (Make, Rake, etc)

Page 10: The Javascript Toolkit 2.0

AUTOMATION UTILITIES

10

Tasks that can be put in the build pipeline.

Page 11: The Javascript Toolkit 2.0

11

minify-tools

concat-tools watch

Page 12: The Javascript Toolkit 2.0

DEPENDENCY MANAGEMENT

12

Applications are getting complex. They rely on several other libraries and

frameworks.

Page 13: The Javascript Toolkit 2.0

13

Page 14: The Javascript Toolkit 2.0

DYNAMIC LOADING

14

Big projects are split among several pieces of javascript for the sake of

modularisation. No all of them should be loaded at the same time.

Page 15: The Javascript Toolkit 2.0

15

github.com/cujojs/curl

github.com/amdjs/amdjs-api

github.com/amdjs/caolan/async

Page 16: The Javascript Toolkit 2.0

JAVASCRIPT PREPROCESSOR

16

The way you organize code in development time is different the way

you publish your code. Need to do some processing in your javascript files before

using them.

Page 17: The Javascript Toolkit 2.0

17

github.com/webpack/webpack

Page 18: The Javascript Toolkit 2.0

TEST RUNNER

18

Execute and visualize test results

Page 19: The Javascript Toolkit 2.0

19

Page 20: The Javascript Toolkit 2.0

TEST FRAMEWORKS

20

Write tests

Page 21: The Javascript Toolkit 2.0

21

Page 22: The Javascript Toolkit 2.0

TESTING END TO END

22

Write tests for the whole application flow

Page 23: The Javascript Toolkit 2.0

23

github.com/angular/protractor

Page 24: The Javascript Toolkit 2.0

TEST SUPPORT

24

Support for tests and others helpers

Page 25: The Javascript Toolkit 2.0

25

Page 26: The Javascript Toolkit 2.0

APPLICATION

26

Applications on web are getting complex, need for frameworks that

support app development.

Page 27: The Javascript Toolkit 2.0

27

Google Closure Tools

Page 28: The Javascript Toolkit 2.0

APPLICATION UTILITIES

28

Several application features that can be necessary (e.g. routing)

Page 29: The Javascript Toolkit 2.0

29

Page 30: The Javascript Toolkit 2.0

DOM UTILITIES

30

DOM selection and manipulation, some auxiliary functions, need for utilities that make work simple (and cross-browser)

Page 31: The Javascript Toolkit 2.0

31

Page 32: The Javascript Toolkit 2.0

JS UTILITIES

32

Clean code, functional programming style, reactive programming features,

helpers and utilities

Page 33: The Javascript Toolkit 2.0

33

lodash.com

github.com/kriskowal/q

baconjs sugarjs chancejs microjs

Page 34: The Javascript Toolkit 2.0

CI

34

Continuous integration, continuous delivery, continuous deployment

Page 35: The Javascript Toolkit 2.0

35

github.com/ryankee/concrete

Page 36: The Javascript Toolkit 2.0

OTHER LANGUAGES

36

Have a syntactic sugar element, or even completely different syntax (that in the end turn into javascript to run in the

browser)

Page 37: The Javascript Toolkit 2.0

37

github.com/clojure/clojurescript

Page 38: The Javascript Toolkit 2.0

WRAP UP

38

Difference Needs|Tools and their relation

Agile demands for you as a developer

Keep your mind open

Page 39: The Javascript Toolkit 2.0

For questions or suggestions: !

THANK YOU