在Node.js开始流行起来时,NPM成为了JavaScript世界中最为流行的模块管理平台。但是在JavaScript部门依然需要以CommonJS的形式获取依赖。
由于ECMAScript或JavaScript自身并没有类似的标准和实现,ES2015决定加入原生的模块化标准
引入模块
import name from 'module-name'
import * as name from 'module-name'
import { member } from 'module-name'
import { member as alias } from 'module-name'
import 'module-name'
暴露模块
export const apiRoot = 'https://example.com/api'
export function method() {
// ...
}
export class Foo {
// ...
}
// 引入模块
import { method, Foo } from 'module.js'
暴露模块默认接口
有些时候,一个模块只需要暴露一个接口,比如使用模块机制定义一个只含有一个单一工具类的模块时:
// client.js
export default class Client {
// ...
}
// app.js
import Client from 'client.js'
混合使用暴露接口语句
export default class Client {
// ...
}
export const foo = 'bar'
// 引入模块
import Client, { foo } from 'module'
从其他模块暴露接口
// module-1.js
export function foo() { /* ... */ }
// module.js
export * from 'module-1' // 从module模块导出module-1模块
// app.js
import { foo } from 'module'
暴露模块的部分接口
export { member } from 'module'
export { default as ModuleDefault } from 'module'
暴露模块的默认接口
export { default } from 'module'