40
MODERN JAVASCRIPT FOR PHP DEVELOPERS Derek Binkley - @DerekB_WI – [email protected]

Modern JavaScript Talk

Embed Size (px)

Citation preview

Page 1: Modern JavaScript Talk

MODERN JAVASCRIPT FOR PHP DEVELOPERSDerek Binkley - @DerekB_WI – [email protected]

Page 2: Modern JavaScript Talk

ABOUT MELead Developer at National Conference of Bar ExaminersFather of threeHome pizza chef

Page 3: Modern JavaScript Talk

WHAT WILL WE LEARNUsing Javascript for Quick PrototypingWays to Incrementally Add Functionality to Existing Pages

Object Oriented DesignTestable and Modular Design

Page 4: Modern JavaScript Talk

SCARED OF JAVASCRIPT? Early on we wanted to add functionality to our static pages But browsers do not agree Plugins for functionality, Flash, ActiveX Big libraries start to evolve, Dojo, YUI

Page 5: Modern JavaScript Talk

JQUERY BECOMES GO TO TOOL Selectors use same syntax as style sheets. Allows for manipulation of DOM Bind to events Add-Ons for UI enhancements

AJAX also takes center stage.

Page 6: Modern JavaScript Talk

MAKING IT MODERN

Page 7: Modern JavaScript Talk

VANILLA JS Using the built in capabilities of the browser. Standard core of ECMAScript Many online references

Page 8: Modern JavaScript Talk

ALL ABOUT THE BROWSER For this talk we are only concerned with the browser. Complementing not replacing PHP Lots of browser tools for developers For this talk we are not looking at a single page app or server side JS

Page 9: Modern JavaScript Talk

FIREFOX WEB CONSOLE Ctrl + Shift + K opens browser console.

Page 10: Modern JavaScript Talk

CHROME DEV TOOLS Ctrl + Shift + I opens browser console.

Page 11: Modern JavaScript Talk

LET'S GET TO SOME CODE

Page 12: Modern JavaScript Talk

OLD FASHIONED EXAMPLE

Page 13: Modern JavaScript Talk

OLD FASHIONED EXAMPLE

Page 14: Modern JavaScript Talk

QUICK JAVASCRIPT BASICS

Page 15: Modern JavaScript Talk

BASICS By default scope is global, var makes it local.

Console let’s you print lines

Prototype based not class based.

Page 16: Modern JavaScript Talk

EVENT HANDLING AND CLOSURES

Page 17: Modern JavaScript Talk

OBJECTS FOR DATA/VIEWIn PHP, we would separate into re-usable, carefully designed objects. So let’s try it in JavaScript.

Page 18: Modern JavaScript Talk

OBJECT FOR DATA

Page 19: Modern JavaScript Talk

OBJECT FOR VIEW

Page 20: Modern JavaScript Talk

OBJECT FOR VIEW – LIST

Page 21: Modern JavaScript Talk

OBJECT FOR VIEW – INITIALIZE & REFRESH

Page 22: Modern JavaScript Talk

BROWSER STORAGE

LocalStorage persists SessionStorage tied to browser tab Same origin policy for security, e.g. http://www.example.com

Page 23: Modern JavaScript Talk

BROWSER STORAGE EXAMPLE

Page 24: Modern JavaScript Talk

A PATTERN DEVELOPS

Page 25: Modern JavaScript Talk

MVVM – MODEL VIEW VIEW MODEL An alternative to Model View Controller Well suited for browser based development Model doesn’t interact directly with View

Page 26: Modern JavaScript Talk

MVVM EXAMPLE

Page 27: Modern JavaScript Talk

MVVM EXAMPLE

Page 28: Modern JavaScript Talk

MVVM EXAMPLE

Page 29: Modern JavaScript Talk

MVVM EXAMPLE

Page 30: Modern JavaScript Talk

MVVM EXAMPLE

Page 31: Modern JavaScript Talk

MVVM EXAMPLE

Page 32: Modern JavaScript Talk

MVVM EXAMPLE

Page 33: Modern JavaScript Talk

THERE IS EVEN MORE TO ADD

Page 34: Modern JavaScript Talk

DATA BINDING Examples using Knockout JS Declarative data binding updates html in real time. Works inside standard html tags View object gets replaced by html parameters

Page 35: Modern JavaScript Talk

DATA BINDING EXAMPLE

Page 36: Modern JavaScript Talk

DATA BINDING EXAMPLE Variables become observable objects

Knockout also offers observable arrays

Page 37: Modern JavaScript Talk

DATA BINDING EXAMPLE

Page 38: Modern JavaScript Talk

UNIT TESTING By following separating concerns your code is now unit testable Many tools out there but beyond the scope of this talk

Page 39: Modern JavaScript Talk

THANKSGive feedback at https://joind.in/event/madison-php-conference-2016/schedule/listDownload slides at http://www.slideshare.net/DerekBinkley/modern-javascript-talk

Page 40: Modern JavaScript Talk

RESOURCES http://vanilla-js.com/ https://developer.mozilla.org/en-US/docs/Web/JavaScript https://msdn.microsoft.com/en-us/library/d1et7k7c(v=vs.94).aspx http://javascriptissexy.com/javascript-objects-in-detail/ http://www.codeproject.com/Articles/278901/MVVM-Pattern-Made-Simple https://www.sitepoint.com/javascript-testing-unit-functional-integration/ Derek Binkley - @DerekB_WI – [email protected]