发布于 2026-01-06 0 阅读
0

JavaScript 的 import 和 require 的区别?

JavaScript 的 import 和 require 的区别?

我最近编写了一个脚本,用于从第三方 API 请求数据,并且我是在 Sapper 项目的服务器上运行这个脚本的。为了正确获取这些数据,我使用了 Promise 链,并且需要在脚本中使用 '.mjs' 扩展名。

自 Node v12 起,ES 模块已默认启用。因此,我使用 '.mjs' 文件来运行包含 Node 模块的文件。
另一种解决此问题的方法是使用 Node.js 的 import 语句,需要将 package.json 文件中的 'type' 设置为 'module'。然而,由于这种格式不受支持(rollup 文件输出的格式为 commonjs),因此使用这种方法导致我的 Sapper 服务器崩溃。详情请参见(此 GitHub issue)。

CommonJS 使用 require 和 module.exports,而 ES6 使用 import 和 export。import 和 export 用于引用 ES 模块,不能用于其他文件类型。

我进一步了解了一下,发现了一些不同之处。

  • import 语句总是会在文件开头执行,而 require 语句则可以在任何时间、任何位置调用。
  • 导入的文件会被排序到文件顶部。
  • 导入功能可用于选择性地加载所需部分,并可节省内存。
  • import 语句可以是异步的,这显然性能更好,而 require 语句是同步的。

还有其他我遗漏的吗?
简而言之:ES6 -> import、export default、export vs CommonJS -> require、module.exports、export.foo

文章来源:https://dev.to/xtineskim/javascript-s-import-vs-require-4nm3