import和require的区别

142 阅读1分钟

1.区别

  1. 加载方式
    • require 是动态,在运行时同步加载模块,这意味着当执行到 require 语句时,Node.js 会去查找并加载指定的模块。
    • import 是静态的,在编译时异步加载模块,通常在文件的顶部使用。这使得 import 语句可以被提升到整个模块的头部,这也是 ES6 模块的一个特性。
  1. 规范
    • require 是基于 CommonJS 规范,这是 Node.js 早期使用的模块化规范。
    • import 是基于 ECMAScript 6+(ES6+)规范,也被称为 ES6 模块。
  1. 导出方式
    • 使用 require 时,通过 module.exports 导出的值是对象的属性,当导出的值被修改时,源对象不会被改变,相当于深拷贝。
    • 使用 import 时,通过 export 导出的值可以直接是变量、函数或类等,当导出的值被修改时,源对象也会被改变,相当于浅拷贝。
  1. 性能
    • require 是同步加载模块,这可能导致性能问题,尤其是在加载大型模块或网络延迟时。
    • import 支持异步加载模块,这有助于优化性能,尤其是在大型项目中。

2.在node环境中能使用import吗?

可以通过在项目的package.json文件中新增配置项"type":"module",这样整个项目中的.js文件都会按照ESM(ECMAScript Module)规范去执行。