Evolution of JavaScript
Who am I?
Nicu Micleușanu
JSMD
JS Enthusiast
http://github.com/micnic/
https://www.npmjs.com/~micnic
Why this talk?
History is important!
Internet before JavaScript
Legend of JavaScript
Brendan Eich
10 days
Initial name: Mocha
Release name: LiveScript
Final name: JavaScript
Browser Wars and JavaScript
Internet Explorer's JScript
Standardization
ES1 - 1997
ES2 - 1998
ES3 - 1999 (RegExp, try/catch)
ES4 (2000 - X)
Classes, Modules, Static Typing, Generators, Iterators, Destructuring
JSON (~2000)
Douglas Crockford
Human-readable, compact format,
language independent
jQuery (2006)
John Resig
CSS3 Selectors for DOM manipulation, simplified AJAX, helpful utilities, plugins
ES5 (2009)
ES3.1
JSON, strict mode, getters and setters
Node.js (2009)
Ryan Dahl
JavaScript on the server-side, async I/O, C/C++ bindings
npm (2010)
Isaac Z. Schlueter
Huge registry, packages for all JS environments, dependency resolving, helpful CLI
CoffeeScript (2009)
Transpiled to JavaScript, Influenced Future of JavaScript, Inspired by Ruby, Python and Haskell, Classes, Arrow Functions, Destructuring, String Interpolation
TypeScript (2012)
JavaScript Superset, Optional Static Typing, Interfaces, Enums, Latest EcmaScript Support, Type Definitions for most JavaScript Projects
War of JS Frameworks
2010
2013
2014
React / Angular / Vue
npm downloads
ES6 / ES2015 (harmony)
Classes, Modules, Generators, Iterators, Destructuring, Promises
TC39
Stage 0: Strawman
Stage 1: Proposal
Stage 2: Draft
Stage 3: Candidate
Stage 4: Finished
ES2016
Array.prototype.includes(),
Exponentiation operator
ES2017
Async functions,
Shared memory,
String padding,
Object.entries() / Object.values()
ES2018
Async iteration,
Rest / Spread object properties,
Regular Expressions syntax updates,
Promise.prototype.finally()
What's next?
ES.NEXT
Stage 0: 20
Stage 1: 45
Stage 2: 16
Stage 3: 15
Finished: 18
Inactive: 16
Interesting Proposals
Class fields and private class members (3)
BigInt (3)
Decorators (2)
Optional Chaining (1)
Do Expressions (1)
Pattern Matching (1)
JavaScript Standard Library (1)
Babel
Use next generation JavaScript, today.
Webpack
Bundle everything, HTML, CSS, JS, Images ...
ESLint
Write good quality JavaScript
THE END