node和es6模块化

Node

Node使用CommonJS规范 ,它有四个重要的环境变量:module、exports、require、global。实际使用时,module变量代表当前模块,exports是module的属性,表示对外输出的接口,加载某个模块,实际上是加载该模块的module.exports属性。用require加载模块(同步)。
Node为每隔模块提供了一个exports变量,指向module.exports,这等同于每个模块头部有这样的一行代码:
var exports = module.exports
exports只是module.exports的一个引用,指向module.exports对象所在的地址

ES6

在ES6模块化中,使用 import 引入模块,通过 export导出模块,但需要babel编译为浏览器可以识别的代码。
1.export与export default均可用于导出常量/函数/文件/模块等;
2.在一个文件或模块中,export/import可以有多个,export default只有一个;
3.通过export方式导出,在导入时需要加{},export default不需要;
4.export能导出变量/表达式,export default不可以。

区别

CommonJS模块输出是一个值的拷贝,ES6模块输出是值的引用。
CommonJS模块是运行时加载,ES6模块是编译时输出接口。
CommonJS模块无论require多少次,都只会在第一次加载时运行一次,然后保存到缓存中,下次在require,只会去从缓存取。

module.exports与exports ,是CommonJS的规范,被使用于Node.js中。
export与export default ,是ES6规范,被使用于React或Vue中。
Polyfill : 解决浏览器对API的兼容问题的。
Babel : Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码。

猜你喜欢

转载自blog.csdn.net/m0_48076809/article/details/106888814