形式上的区别
require/exports,import/export写法上的区别
require实际上就三种写法
const fs = require('fs')
exports.fs = fs
module.exports = fs
而 import/export 的写法就多种多样:
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'
二者本质上的差别
-
CommonJS 还是 ES6 Module 输出都可以看成是一个具备多个属性或者方法的对象;
-
default 是 ES6 Module 所独有的关键字,export default fs 输出默认的接口对象,import fs from 'fs' 可直接导入这个对象;
-
ES6 Module 中导入模块的属性或者方法是强绑定的,包括基础类型;而 CommonJS 则是普通的值传递或者引用传递。