ECMAScript: ES5, ES5.1, ES6 (or ECMAScript 2015), ES7 (or ECMAScript 2016), ES8 (or ECMAScript 2017)
- SpiderMonkey.- Used by the Firefox browser and Adobe Acrobat. Supports ES5.1, and features from ES6 and ES7.
- V8.- Used by the Google Chrome browser, Opera browser and Node.js. Supports ES6.
- Chakra.- Used by the Microsoft Edge browser. Supports ES5.1 and features from ES6.
ES.Next - The 'catch-all' ECMAScript future
For example, features that became part of ES7 (ECMAScript 2016) or ES8 (ECMAScript 2017) were once cataloged under the ES.Next umbrella term, before being approved for inclusion in an official ECMAScript standard.
Shims and Polyfills
Though you may still be able to get away using a couple of
Transpiling and transpilers
Modules, namespaces & module types
Modules play an important role in programming languages because they decouple functionality into standalone units (e.g. a module for XML processing, another module for JSON processing), which in turn favors changing these units independently and plugging them into larger projects like building blocks. With modules also comes the concept of namespaces, which means every variable, function, class or construct in a module is given a unique identifier (e.g.
json.read()). These unique identifiers or namespaces also play an important role in development because they avoid potential name clashes (e.g. using a common function name like
load() without namespaces can be confusing, with a namespace it's unequivocally clear
- CommonJS.- Uses the
requirekeywords to reference modules. CommonJS is used extensively in Node.js packages.
- UMD (Universal Module Definition).- UMD appeared to support both AMD and CommonJS features.
Module loaders and bundlers
Some of the more popular module loaders/bundlers include: SystemJS, RequireJS, webpack and browserify.