JavaScript import vs require

  1. JavaScript 中的 require()
  2. JavaScript 中的 import()
  3. JavaScript 中 requireimport 之间的主要区别

本文介绍了 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 中 requireimport 之间的主要区别

require() 是使用 CommonJS 的 node.js 语句,而 import() 仅与 ES6 一起使用。

require() 保留在文件中的位置(非词法),而 import() 始终移至顶部。

可以在程序的任何位置调用 require(),但是只能在文件的开头运行 import()

大多数人直接使用 require() 语句运行代码,但是更喜欢在使用 import() 时使用实验性模块功能标志。

最后,所有使用 require() 语句的文件都保存为 .js 文件,而带有 import() 的文件只能另存为 .mjs 文件。

它们不能同时在一个程序中使用。

一般来说,import() 更受欢迎,因为它允许用户仅选择和加载他们需要的模块部分。该语句的性能也比 require() 好,并节省了一些内存。