美文网首页
require和import的区别

require和import的区别

作者: newTmorrow | 来源:发表于2021-03-08 11:08 被阅读0次

require 和 import 分别是不同模块化规范下引入模块的语句,下文将介绍这两种方式的不同之处。

1.两种方案各有各的限制,需要注意以下几点:

原生浏览器不支持 require/exports,可使用支持 CommonJS 模块规范的 Browsersify、webpack 等打包工具,它们会将 require/exports 转换成能在浏览器使用的代码。

import/export 在浏览器中无法直接使用,我们需要在引入模块的 元素上添加type="module属性。

即使 Node.js 13.2+ 已经支持 import/export,Node.js官方不建议在正式环境使用,目前可以使用 babel 将 ES6 的模块系统编译成 CommonJS 规范(注意:语法一样,但具体实现还 是require/exports)。

2. require/exports 是运行时动态加载,import/export 是静态编译

CommonJS 加载的是一个对象(即 module.exports 属性),该对象只有在脚本运行完才会生成。而 ES6 模块不是对象,它的对外接口只是一种静态定义,在代码静态解析阶段就会生成。- 阮一峰

4. require/exports 输出的是一个值的拷贝,import/export 模块输出的是值的引用

require/exports 输出的是值的拷贝。也就是说,一旦输出一个值,模块内部的变化就影响不到这个值。

import/export 模块输出的是值的引用。JS 引擎对脚本静态分析的时候,遇到模块加载命令import,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。

若文件引用的模块值改变,require 引入的模块值不会改变,而 import 引入的模块值会改变。

5.import/export 不能对引入模块重新赋值/定义

6.import/export 只能在模块顶层使用,不能在函数、判断语句等代码块之中引用;require/exports 可以。

7.import/export 导出的模块默认调用严格模式,而require默认不是

参考资料

相关文章

  • require,import ,export default,m

    module.exports和exports区别 import和require的区别 import和require...

  • 2、require 和 import 的区别?

    【转载出处】 require 和 import 的区别? 谈谈import和require的区别 1⃣️、遵循的规...

  • require和import区别

    使用形式不一样 import 还有一个重要的区别import是解析时候加载的,require是运行时加载,requ...

  • import和require区别

    在学习过程发现项目代码中存在两种引入方式,便各方查了两种的区别(一下内容为自我学习笔记,如有不当还请指教): 1、...

  • import 和 require区别

    ES6之前出现了JS模块加载的法案,最主要是CommonJS和AMD规范。CommonJS前者主要应用于服务器,实...

  • require和import区别

    遵循的模块化规范不一样 模块化规范:即为 JavaScript 提供一种模块编写、模块依赖和模块运行的方案。谁让最...

  • import 和 require区别

    import和require分别是不同模块化规范下引入模块的语句。 1.时间 年份出处require/exprot...

  • require和import区别

    node编程中最重要的思想就是模块化,import和require都是被模块化所使用。 遵循规范–require ...

  • import和require的区别

  • import和require的区别

    node编程中最重要的思想就是模块化,import和require都是被模块化所使用。 遵循规范 require...

网友评论

      本文标题:require和import的区别

      本文链接:https://www.haomeiwen.com/subject/eulpqltx.html