CommonJS modules export values, while ES6 modules export immutable bindings. This blog post explains what that means.
You should be loosely familiar with ES6 modules. If you aren’t, you can consult the chapter on modules in “Exploring ES6”.
I’ve created a survey to find out what ES6 (a.k.a. ECMAScript 2015) features people like most:
Update 2018-05-09: Even though tail call optimization is part of the language specification, it isn’t supported by many engines and that may never change. The ideas are still interesting, however and explained in this blog post.
ECMAScript 6 offers tail call optimization, where you can make some function calls without growing the call stack. This blog post explains how that works and what benefits it brings.
Updates:
[2015-07-02] New material in these sections:
[2015-06-24] I added an FAQ with three new questions:
WebAssembly (short: wasm) is a new binary format for the web, created by Google, Microsoft, Mozilla and others. It will be used for performance critical code and to compile languages other than JavaScript (especially C/C++) to the web platform. It can be seen as a next step for asm.js [^3].
This blog post describes the new number and Math
features of ECMAScript 6.
This blog post describes the options you have for deploying ECMAScript 6 in current JavaScript environments. It is selective w.r.t. the amount of tools it covers. If you want a comprehensive list of tools, I suggest you look at Addy Osmani’s “ECMAScript 6 Tools”.
Consult the blog post “Using ECMAScript 6 today” for an overview of ES6 features.
This blog post explains how to use ES6 on Node.js by transpiling it to ES5 via Babel.
A previous blog post showed how to dynamically transpile ES6 at runtime (also via Babel). That is more convenient and should work for most projects, but occasionally you may want a simpler and faster setup for your runtime environment.
webpack is a client-side module builder and module loader. This blog post shows you how to write ECMAScript 6 code with it.
The code shown here is on GitHub, in the project webpack-es6-demo
.
Generators, a new feature of ECMAScript 6 [^4], are functions that can be paused and resumed. This helps with many applications: iterators, asynchronous programming, etc. This blog post explains how generators work and gives an overview of their applications.
The following GitHub repository contains the example code: generator-examples