1.es6 module 在实现之前,node的module 遵循commonjs规范, require遵循AMD,seajs遵循CMD。
2.es6中的module没有采用commonjs,require仍然是node的一个私有的全局方法;
3.import是编译时的,require是运行时的,import必须放在文件开头,而且格式是确定的,不容置疑。它不会将整个模块运行后赋值给某个变量,而是只选择import接口进行编译,这样在性能上比require好很多。
require 是赋值过程,import是解构过程,当然require也可以将结果解构赋值给一组变量,但是 import 在遇到default时,和require则完全不同。
目前而言,所有的引擎还没有实现import,在node中使用babel支持es6,也仅仅是将es6转换成了es5再执行,import 会被转码为require。这也是为什么module.exports在引入模块时使用import仍然有效。因为本质上,import会被转码为require去执行。
网友评论