import与require的区别

简介:

require/exports 出生在野生规范当中,什么叫做野生规范?即这些规范是 JavaScript 社区中的开发者自己草拟的规则,得到了大家的承认或者广泛的应用。比如 CommonJS、AMD、CMD 等等。import/export 则是名门正派。TC39 制定的新的 ECMAScript 版本,即 ES6(ES2015)中包含进来。

区别:

import 、export 是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法。

require、exports是CommonJS的标准。是Nodejs所使用的标准,目前NodeJs还无法支持ES6. 所以目前react、vue等框架都还是使用的CommonJS标准。看到的多数是require写法,可以理解为使用require的写法使用范围更广泛,因为它是建立在es5标准之上的


CommonJS 作为 Node.js 的规范,一直沿用至今。由于 npm 上 CommonJS 的类库众多,以及 CommonJS 和 ES6 之间的差异,Node.js 无法直接兼容 ES6。


所以现阶段 require/exports 任然是必要且实必须的。出自 ES6 的 import/export 相对就晚了许多。被大家所熟知和使用也是 2015 年之后的事了。
这其实要感谢 babel(原来项目名叫做 6to5,后更名为 babel) 这个神一般的项目。由于有了 babel 将还未被宿主环境(各浏览器、Node.js)直接支持的 ES6 Module 编译为 ES5 的 CommonJS —— 也就是 require/exports 这种写法 —— Webpack 插上 babel-loader 这个翅膀才开始高飞,大家也才可以称 " 我在使用 ES6! "


参考链接:

https://www.zhihu.com/question/56820346/answer/150724784

http://es6.ruanyifeng.com/#docs/module-loader#ES6-%E6%A8%A1%E5%9D%97%E4%B8%8E-CommonJS-%E6%A8%A1%E5%9D%97%E7%9A%84%E5%B7%AE%E5%BC%82

猜你喜欢

转载自www.cnblogs.com/shuhe-nd/p/11898571.html
今日推荐