require和import的区别

116 阅读1分钟

形式上的区别

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 则是普通的值传递或者引用传递。