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

Made with Slides.com