JavaScript import vs require
本文介绍了 JavaScript 语句 require()
和 import()
之间的主要区别。它还提供了上下文,并详细说明了每种上下文可与 ES6 和 CommonJS 一起使用的地方。
JavaScript 中的 require()
这是一个内置的 node.js 语句,最常用于包含来自其他单独文件的模块。它通过读取 JS 文件,执行该文件并返回要导出的对象来工作。它以合并核心节点模块,基于社区的甚至本地模块的能力而非常受欢迎。
我们可以使用 require()
在 JavaScript 中包含一个内置模块。
const express = require('express');
包含本地模块也很容易。
require('local_module');
如上所示,node.js
将尝试在指定的路径中找到 local_module.js
。输出将根据找到的节点进行延迟:如果文件存在于指定的路径中,则输出将显示模块的内容。如果不是这样,你可能会收到以下错误。
Error: Cannot find module 'local_module'
at Function.Module._resolveFilename(module.js: 470: 15)
at Function.Module._load(module.js: 418: 25)
at Module.require(module.js: 498: 17)
at require(internal / module.js: 20: 19)
at repl: 1: 1
at ContextifyScript.Script.runInThisContext(vm.js: 23: 33)
at REPLServer.defaultEval(repl.js: 336: 29)
at bound(domain.js: 280: 14)
at REPLServer.runBound[as eval](domain.js: 293: 12)
at REPLServer.onLine(repl.js: 533: 10)
JavaScript 中的 import()
import()
是一个 ES6 模块。与 export()
一起,它们通常被称为 ES6 导入和导出。从本质上讲,这意味着该语句不能与 ES 模块之外的其他文件类型一起使用。
import()
语句使用户可以导入他的模块并在程序中使用它们。语法为:
import './this-module.js';
用户指定要导入的模块的文件路径。
JavaScript 中 require
和 import
之间的主要区别
require()
是使用 CommonJS 的 node.js
语句,而 import()
仅与 ES6 一起使用。
require()
保留在文件中的位置(非词法),而 import()
始终移至顶部。
可以在程序的任何位置调用 require()
,但是只能在文件的开头运行 import()
。
大多数人直接使用 require()
语句运行代码,但是更喜欢在使用 import()
时使用实验性模块功能标志。
最后,所有使用 require()
语句的文件都保存为 .js
文件,而带有 import()
的文件只能另存为 .mjs
文件。
它们不能同时在一个程序中使用。
一般来说,import()
更受欢迎,因为它允许用户仅选择和加载他们需要的模块部分。该语句的性能也比 require()
好,并节省了一些内存。