Skip to content
本文总阅读量

JavaScript ES6 模块化

CommonJS

exports 和 modules.exports 的关系

js
// export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系
function sum(a, b) {
  return a + b;
}
// 暴露
export.sum = sum;
// 引用
const { sum } = require('...')

// 暴露
module.exports = { sum }
// 引用
import  { sum }  from  '...'

Node应用由模块组成,采用 CommonJS 模块规范

ES6 模块规范

export 和 export default 的关系

js
// 暴露
export const a = 1
// 引用
import { a } from '...'

// 暴露
export  default  class  worker {}
// 引用
import  worker  from  '...'
  • 用 export default,import 语句不需要使用大括号;用 export,对应的 import 语句需要使用大括号,一个模块只能有一个默认输出,所以 export default 只能使用一次

require/exports 和 import/export 形式不一样

扩展

  • require/exports 的用法只有以下三种简单的写法:
JS
const fs = require('fs')
exports.fs = fs
module.exports= fs
  • import/export 的写法就多种多样:
JS
import fs from 'fs'
import {default as fs} from 'fs'
import * as fs from 'fs'
import {readFile} from 'fs'
import {readFile as read} from 'fs'
import fs,{readFile} from 'fs'
export default fs
export const fs
export function readFile
export {readFile, read}
export * from 'fs'