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() 好,並節省了一些記憶體。