63

JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

  • View
    1.195

  • Download
    1

Embed Size (px)

DESCRIPTION

Slides from presentation delivered at Prairie Dev Con 2013 in Saskatoon, SK entitled JavaScript Revolution: The New Age of Software Development.

Citation preview

Page 1: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
Page 2: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

THE JAVASCRIPTREVOLUTION

THE NEW AGE OF SOFTWARE DEVELOPMENTAn original presentation by / David Wesst @davidwesst

Prarie Dev Con 2013 - Saskatoon, SK

Page 3: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DAVID WESSTFROM WINNIPEG, MANITOBA

SYSTEMS ANALYST, UNIVERSITY OF MANITOBA (FACULTY OFMEDICINE)

MICROSOFT MVP, INTERNET EXPLORER

IE USER AGENT USERAGENTS.IE

PRODUCER, BREWPUB STUDIOS

Page 4: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DAVID WESST@DAVIDWESST ON TWITTER

DAVIDWESST.COM ON THE WEB

DAVIDWESST.COM/BLOG ON THE BLOGOSPHERE

DW [AT] DAVIDWESST.COM ON EMAIL

Page 5: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

FOLLOW ALONGHTTP://DAVIDWESST.GITHUB.IO/DW-PRESENTATIONS

Page 6: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

SLIDES AND DEMOS WILL BE POSTEDAFTERWARDS.

Page 7: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

THE POINTTO ACCOMPLISH ONE OF THESE BEFORE YOU LEAVE:

To see some new JavaScript toolsTo understand how a JavaScript project can workTo bring you up-to-speed with JavaScript

Page 8: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

THE POINTTHEME FOR THIS PRESENTATION

TO SHOW YOU THATJAVASCRIPT IS A REAL

OPTION

Page 9: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

THE PLANA.K.A. THE AGENDA

Why JavaScript?

Survival Skills for the New Age of JavaScript

Modern Day JavaScript Projects

Source ControlJavaScript Code TodayManaging DependenciesTest, Test, and Test AgainBuilding JavaScript

Next Steps

Page 10: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

THE PLANSETTING YOUR EXPECTATIONS

This presentation is...

An overview of JavaScript modern developmentA review of JavaScript development toolsA "core sample" of pure JavaScript developmentA taste of things to come for JavaScript at DevTeach

Page 11: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

THE PLANSETTING YOUR EXPECTATIONS

This presentation is not...

A 100% code-centric presentationA lesson on JavaScript coding practicesA discussion on JavaScript ALM (Application LifecycyleManagement)A "deep-dive" into one or more specific JavaScripttechnologies

Page 12: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

WHY JAVASCRIPT?

Page 13: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

WHY JAVASCRIPT?COMMON ARGUMENTS ABOUT JAVASCRIPT

JAVASCRIPT IS FOR CLIENT-SIDE WEB DEVELOPMENT ANDNOTHING ELSE.

IT'S NOT AN OO LANGUAGE, SO I CAN'T USE IT FOR ANYTHING.

I DON'T PROGRAM FOR THE WEB, SO I DON'T NEEDJAVASCRIPT ANYWAY.

Page 14: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

WHY JAVASCRIPT?

Image Source: Wikimedia Commons

Page 15: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

JavaScript is for client-side web developmentand nothing else.

NOT QUITE...Web BrowsersChrome Installed Apps / Chromium AppsiOS, Windows Phone, Android (through PhoneGap)Windows 8Wii U

Page 16: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

It's not an OO language, so I can't use it foranything.

ACTUALLY, IT IS.Prototype-based LanguageProvides properties, classes, polymorphism, etc...

Page 17: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

I don't program for the web, so I don't needJavaScript anyway.

JAVASCRIPT LIVES OUTSIDE OF THE WEBWindows Store AppsChromium and Firefox AppsWii UPhoneGap

Page 18: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

SURVIVAL SKILLS FORTHE NEW AGE OF

JAVASCRIPT

Page 19: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

SURVIVAL SKILLS FOR THE NEW AGE OFJAVASCRIPT

OPEN SOURCE IS YOUR FRIEND

Page 20: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

SURVIVAL SKILLS FOR THE NEW AGE OFJAVASCRIPT

PLAN AND CHOOSE YOUR PLATFORMS

Page 21: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

SURVIVAL SKILLS FOR THE NEW AGE OFJAVASCRIPT

UNDERSTAND YOUR HTML5

Page 22: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

SURVIVAL SKILLS FOR THE NEW AGE OFJAVASCRIPT

EXPLORE YOUR ENVIRONMENT(S)Eclipse (Web Platform Tools, Aptana, Nodeclipse)Visual Studio 2012/2013WebMatrixWebStormCloud9 (http://c9.io)

Page 23: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAYJAVASCRIPT PROJECTS:

SOURCE CONTROL

Page 24: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

HERE'S THE SECRET:

ANY SOURCE CONTROLWILL DO!

BUT IN CASE YOU ARE GOING OPEN SOURCEWITH YOUR PROJECT...

Page 25: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS: SOURCECONTROL

A FEW CONSIDERATIONS FOR OPEN SOURCE PROJECTSVisibilityShare-abilityAccessibility

Page 26: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS: SOURCECONTROL

SOME OPTIONSGithub (http://github.com)Bitbucket (http://bitbucket.org)CodePlex (http://codeplex.com)Google Code (http://code.google.com)

Page 27: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAYJAVASCRIPT PROJECTS:

JAVASCRIPT CODE TODAY

Page 28: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:JAVASCRIPT CODE TODAY

COMPILERSProvide solution to some common "issues" with JavaScript

More familiar syntax than JavaScriptProvides common keywords like "class" and "interface"Compiles into optimized JavaScriptMakes OO programming easier to learn in JavaScript

Page 29: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:JAVASCRIPT CODE TODAY

COMPILERSPopular Examples

CoffeeScript - Ruby Like SyntaxTypeScript - Superset of JavaScriptFor more check out Altjs.org

Page 30: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DEMO: COMPILERSTYPESCRIPT

Page 31: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:JAVASCRIPT CODE TODAYMV* PATTERNS AND FRAMEWORKS

MVC, Model View ControllerMVVM, Model View ViewModelMVP, Model View Presenter

Page 32: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:JAVASCRIPT CODE TODAYMV* PATTERNS AND FRAMEWORKS

Backbone (http://backbonejs.org/)Knockout (http://knockoutjs.com/)AngularJS (http://angularjs.org/)

Page 33: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DEMO: MV* PATTERNSAND FRAMEWORKS

KNOCKOUTJS

Page 34: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:JAVASCRIPT CODE TODAY

ON THE SERVER WITH NODEJSRuns JavaScript on the ServerOpen Source TechnologyProvides Asynchronous I/O, i.e. Non-Blocking I/O

Page 35: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DEMO: ON THE SERVERWITH NODEJS

WALKING THROUGH NODEJS

Page 36: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAYJAVASCRIPT PROJECTS:

MANAGINGDEPENDENCIES

Page 37: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:MANAGING DEPENDENCIES

REQUIREJSAllows you to define and load JavaScript modulesRemoves need for "script" tags to define dependenciesRuns JavaScript ONLY when dependencies are loaded

Page 38: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DEMO: MANAGINGDEPENDENCIES

REQUIREJS

Page 39: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:MANAGING DEPENDENCIES

NPM, NODE PACKAGED MODULESBundled with NodeJSDefine dependencies through package name or git repoThrows errors when dependencies are not loaded properlyDefine dependencies in package.json

Page 40: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DEMO: MANAGINGDEPENDENCIES

NPM, NODE PACKAGED MODULES

Page 41: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAYJAVASCRIPT PROJECTS:TEST, TEST, AND TEST

AGAIN

Page 42: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS: TEST,TEST, AND TEST AGAIN

TESTING YOUR JAVASCRIPTLarge number of frameworks for testsApply TDD or BDD PracticesMocking frameworks exist as wellAvailable for both client and server

Page 43: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS: TEST,TEST, AND TEST AGAIN

TESTING YOUR JAVASCRIPT: QUNITDeveloped by jQueryUnit Testing FrameworkNo external dependencies (not even jQuery)

Page 44: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS: TEST,TEST, AND TEST AGAIN

TESTING YOUR JAVASCRIPT: JASMINEBDD based frameworkResembles RSpecNo external dependenciesProvides multiple output channels for results

Page 45: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS: TEST,TEST, AND TEST AGAIN

TESTING YOUR JAVASCRIPT: MOCHABDD based frameworkResembles RSpecWorks with both client and server (NodeJS)

Page 46: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DEMO: TEST, TEST, ANDTEST AGAIN

MOCHA

Page 47: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAYJAVASCRIPT PROJECTS:BUILDING JAVASCRIPT

Page 48: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:BUILDING JAVASCRIPT

WHY "BUILD" YOURJAVASCRIPT?

WE AREN'T REALLY BUILDING ANYTHING...ARE WE?

Page 49: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:BUILDING JAVASCRIPT

YOU ARE NOW.

Page 50: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:BUILDING JAVASCRIPT

WHAT WE CAN TODAY DO TODAY WITH JAVASCRIPT1. Get our source2. Compile it (from TypeScript)3. Setup dependencies4. Test it

Page 51: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:BUILDING JAVASCRIPT

SOME BUILDING SOLUTIONSTravis-CI (Free for Open Source)JenkinsWhatever you want to execute CLI commands

Page 52: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
Page 53: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DEMO: BUILDINGJAVASCRIPT

TRAVIS-CI

Page 54: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

MODERN DAY JAVASCRIPT PROJECTS:BUILDING JAVASCRIPT

GRUNT: THE JAVASCRIPT CLI TOOLOpen SourceProvides CLI to run common project actionsAllows you to define custom CLI actions

Page 55: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

GRUNTJS.ORG

Page 56: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

QUICK RECAP: THE PLAN

Why JavaScript?

Survival Skills for the New Age of JavaScript

Modern Day JavaScript Projects

Source ControlJavaScript Code TodayManaging DependenciesTest, Test, and Test AgainBuilding JavaScript

Next Steps

Page 57: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

QUICK RECAP: THE POINTTO ACCOMPLISH ONE OF THESE BEFORE YOU LEAVE:

To see some new JavaScript toolsTo understand how a JavaScript project can workTo bring you up-to-speed with JavaScript

Page 58: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

QUICK RECAP: THE POINTTHEME FOR THIS PRESENTATION

TO SHOW YOU THATJAVASCRIPT IS A REAL

OPTION

Page 59: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

NEXT STEPSWhere do we go from here?

Page 60: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

NEXT STEPSGo to the other JavaScript/HTML5 Presentations at PrDCMake Your Own JavaScript ProjectLeverage one of the tools in your exiting projectsBuild a JavaScript Project

Page 61: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

NEXT STEPSCHECK OUT A RESOURCE

Douglas Crockford's BlogJavaScript: The Good PartsCheckout the npm (http://npmjs.org)

Page 62: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DAVID WESSTFROM WINNIPEG, MANITOBA

SYSTEMS ANALYST, UNIVERSITY OF MANITOBA (FACULTY OFMEDICINE)

MICROSOFT MVP, INTERNET EXPLORERIE USER AGENT USERAGENTS.IE

PRODUCER, BREWPUB GAMES

Page 63: JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK

DAVID WESST@DAVIDWESST ON TWITTER

DAVIDWESST.COM ON THE WEB

DAVIDWESST.COM/BLOG ON THE BLOGOSPHEREDW [AT] DAVIDWESST.COM ON EMAIL