区别一
module.exports和exports 是CommonJs的规范,被使用于Node.js中export、export default 是ES6的规范,被用于React、Vue中
区别二
通过export方式导出时,导入要加上 { }
通过export default导出时,不需要
区别三
module代表一个模块,exports是module的属性,表示对外的接口。加载某个模块,其实就是加载该模块的module.exports属性。
区别四
CommonJs(require)运行时加载(动态加载);ES6(import)编译时加载(静态加载),必须放在文件开头。
区别五
require是请求整个包对象而import是只请求模块中需要的部分。
本质区别六
两者的输出都是一个具备多个属性和方法的对象import导入模块的属性和方法是强绑定的,包括基础类型;导入和导出的只都指向同一个内存地址。require则是普通的值传递或者引用传递。(旧值)就算导出的值发生变化,导入的值也不会发生变化。
写法不一样
require写法
1
2
3const fs = require('fs');
exports.fs = fs
module.exports = fsimport写法很多
1
2
3
4
5
6
7
8
9
10import fs from 'fs';
import {default as fs} from 'fs';
import * as fs from 'fs';
import {readFile} from 'fs';
import fs, {readFile} from 'fs'
export default fs;
export const fs;
export {readFile, read};
export * from 'fs'
提问
1.
require和import会不会循环引用不会,因为模块执行后会把导出的值缓存。下次再
require或import都是读的缓存,不会再次执行。