JavaScript - Require() 函数
包含执行特定任务的 JavaScript 代码的文件称为模块。由于模块是独立的且与其他代码部分相互独立,因此可以轻松地添加、删除和更新功能,而不会影响整个代码。
如果这些模块位于单独的 JavaScript 文件中,则应在原始 JavaScript 代码中使用它们。
在本章中,我们将介绍 require() 函数的功能、使用方法以及 require 和 import 函数之间的一些区别。
如何运行 ES 和 CommonJS 模块
浏览器中的 JavaScript 模块执行依赖于 import 和 export 语句。ES 模块分别由这些语句加载和导出。大多数在线浏览器默认支持它,并且它是 JavaScript 中公认的、官方的模块复用方法。
默认情况下,Node.js 支持 CommonJS 模块格式,该格式使用 module.exports 导出模块,并使用 require() 导入模块。
JavaScript require() 函数
require() 方法是 Node.js 支持的内置 CommonJS 模块函数,用于将模块添加到项目中。这样做的原因是,默认情况下,Node.js 将 JavaScript 代码视为 CommonJS 模块。
require() 函数接受一个指定模块路径的字符串参数。该路径可以是 -
核心模块:Node.js 有各种内置模块。当 require() 函数接收到不以"./"、"../"或"/"开头的字符串参数时,它会假定该参数是核心模块或安装在 node_modules 文件夹中的模块。
本地模块:如果参数以"./"或"../"开头,Node.js 会将其视为相对路径或绝对路径,并尝试从该位置的文件加载模块。
已安装模块:Node.js 模块也可以通过 npm(Node 包管理器)安装。在这种情况下,Node.js 会在 node_modules 文件夹中搜索该模块。
require() 函数的用法
require() 方法易于使用和理解,因为您只需将其赋值给一个变量即可。此函数将接受位置名称作为输入。以下是通用语法 -
const locName = require(locationName);
假设您有一个 CommonJS 模块,它导出函数 *get_full_name*,如下所示 -
//utils.js
const get_full_name = (first_name, last_name) => {
return `My full name is ${first_name} ${last_name}`;
};
module.exports = get_full_name;
然后,您可以使用 require() 函数在 JavaScript 文件中使用此模块或将其包含进去 -
//index.js
const get_full_name = require('./utils.js');
console.log(get_full_name('Amit', 'Sharma'));
在上面的代码中,模块位于本地文件中,因此本地地址是通过文件名引用的。但如果您想从 Web 添加外部模块,可以使用基于 Web 的位置 -
const myVar = require('http://web-module.location');
require() 和 的区别import() 函数
require() 和 import() 命令都可以将外部文件的代码导入 JavaScript 程序,但它们的工作方式不同。以下是两个主要区别:
您可以在整个代码中使用 require() 方法。您甚至可以有条件地使用它,这意味着它只在特定条件下运行。
import 语句始终在文件开头执行,不能有条件地使用。
如果要使用 require(),则要导入的文件必须具有 .js 扩展名。
如果使用导入,则文件的扩展名应为 .mjs。
require() 函数更灵活,可以在整个代码中使用,但导入的限制更多,它始终从文件开头执行,并且经常需要不同的文件扩展名。

