​AirBNB JavaScript Style Guide: Modules​
10.1 Always use modules (import/export) over a non-standard module system.
10.2 Do not use wildcard imports.
10.6 In modules with a single export, prefer default export over named export.
Interpretation: multiple exports allowed
Confusing as hell
ESM vs CommonJS vs ES6
If using export default
use import var from module
:
export const foo = 42export default 21;
If you want the 21
, use import bar from './input';
import barImport from './input';console.log(barImport); // 21​const barRequire = require('./input');console.log(barRequire);/*{foo: 42,default: 21,}*/
export const types = () => {}
is different from
export function types() { }
​ | ​ | ​ | Goals | ​ |
CommonJs |
|
| ​ | ​ |
AMD | ​ | define(['dependency1'], function(dependency1 | Load synchronously | Asynchronous Module Definition |
UMD | ​ | ​ | ​ | Universal Module Definition |
ESM | ​ | ​ | ​ | ​ |