Landscape & Language
in the
World of JavaScript
JavaScript
Written by Brendan Eich in 10 Days
Mocha
(not to be confused with the Mocha Test Framework)
LiveScript
VBScript
JScript
Notes:
https://en.wikipedia.org/wiki/Brendan_Eich
https://en.wikipedia.org/wiki/JavaScript#History
ECMAScript
Standardized by Ecma International
(previously the European Computer Manufacturers Association)
TC39 - The ECMAScript specification committee
ECMAScript 3
ECMAScript 4 –– never standardized
ECMAScript 5 == "Harmony"
ECMAScript 6 == ES 2015
ECMAScript 7 == ES 2016 == ECMA-262
Notes:
https://en.wikipedia.org/wiki/Ecma_International
https://en.wikipedia.org/wiki/JavaScript
https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla
https://medium.com/@jayphelps/please-stop-referring-to-proposed-javascript-features-as-es7-cad29f9dcc4b#.93d42og53
Transpilers
Translate one language or version
to another language or version, e.g.
ES6 ==> ES3
TypeScript ==> ES3
Babel
Traceur
es6-shim
esnext
Notes:
https://scotch.io/tutorials/javascript-transpilers-what-they-are-why-we-need-them
http://thenewstack.io/javascript-transpilers-need-know/
Which Version to Use?
It depends on many factors,
namely where your JS lives ...
Notes:
Front-End
aka Client-Side / Browser
DOM - Document Object Model
jQuery versus ECMAScript
ECMAScript versions:
MDN Documentation's
Specifications & Browser Compatibility (
e.g.
)
http://kangax.github.io/compat-table/es6/
Notes:
https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
https://gist.github.com/liamcurry/2597326
https://plainjs.com/
http://modernweb.com/2014/05/05/replacing-jquery-with-vanilla-javascript/
http://vanilla-js.com/
MDN - Mozilla Developer Network - https://developer.mozilla.org/en-US/
DETOUR: JS Engines
V8 - Chrome and node
SpiderMonkey - Firefox
Chakra - Microsoft IE & Edge
JavaScriptCore - Safari
Carakan - Opera
Notes:
DETOUR: Responsive Design
Examples:
http://designmodo.com/responsive-design-examples/
https://responsivedesign.is/examples
How to:
https://www.smashingmagazine.com/2011/01/guidelines-for-responsive-web-design/
Notes:
Back-End
Server-Side
node.js
(io.js)
ECMAScript versions:
http://node.green/
(compatibility)
Notes:
Synchronicity
Synchronous == Blocking
Async
hronous == non-blocking
AJAX
Promises
Notes:
http://stackoverflow.com/questions/16336367/what-is-the-difference-between-synchronous-and-asynchronous-programming-in-node
AJAX - Asynchronous JavaScript and XML
Programming Paradigms & Data Mutability
Programming Paradigms:
Procedural / Imperative
Object-oriented
Functional
Data Mutability:
Mutable
Immutable
Notes:
http://funkyjavascript.com/procedural-vs-object-oriented-vs-functional-programming/
https://en.wikipedia.org/wiki/Procedural_programming
Modules & Libraries
DRY - "Don't Repeat Yourself"
Sharing code between neighbors
npm
How?
<script> tags
CommonJS
AMD (Asynchronous Module Definition)
-
RequireJS
ES6 Modules
Notes:
A module or library is "a chunk of self-contained code that we can use and re-use in our own projects" - https://www.infoq.com/articles/state-of-javascript-2016
https://medium.freecodecamp.com/javascript-modules-a-beginner-s-guide-783f7d7a5fcc
Testing
TDD - Test Driven Development
Test Tools:
Selenium
- webdriver
Mocha
/
Jasmine
- testing frameworks
Chai
- assertion library
Karma
- test runner
PhantomJS
- scriptable headless webkit
Nightwatch
- end-to-end testing framework
Travis
/
Jenkins
- continuous integration tools
Sauce Labs
/
BrowserStack
- cross-browser testing (VM farms)
Notes:
https://metasean.github.io/blog/2016/04/07/T-D-D-for-J-S-Learners.html
Build Tools
Automating our work
Build Tools:
grunt
gulp
browserify
webpack
Related concepts:
hot reloading
sourcemaps
Notes:
Frameworks vs Libraries
Opinionated scaffolding & standardization
Frameworks:
Angular 1.x / 2.x
Ember.js
Meteor
Libraries:
React
Backbone
jQuery
Underscore
/
Lodash
Notes:
Databases
Relational Databases - SQL
(Structured Query Language)
:
MySQL
,
PostgreSQL
NoSQL
Document-Oriented:
MongoDB
,
Firebase
,
RethinkDB
Graph-Oriented:
GUN
,
ArangoDB
,
OrientDB
Notes:
conf.utahjs.com/
Made with Slides.com