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