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