假設您的 NodeJS 專案中有一個 index.js 文件,您在其中使用了五個函數。但是,其中兩個函數也可能在其他文件中使用。因此,您在專案中建立了三個文件,而不是一個文件:
這裡,每個Javascript檔案都是一個模組,導出類別/函數和導入它們的方式基本上是模組系統。模組系統允許我們拆分和包含程式碼,並在需要時導入我們或其他開發人員編寫的程式碼。
這些模組不僅僅是專案中存在的 Javascript 檔案;它們也可以是您在專案中作為依賴項安裝的任何外部套件。另外,NodeJS 有一些內建模組,如 http、fs 等,這些模組可以隨安裝一起使用,並且可以在不添加任何外部依賴的情況下導入。
Node.js 中使用了兩個模組系統。
您已經閱讀了我之前博客中的廚房-廚師-服務員示例;同樣,如果我們將模組與此進行比較,想像CommonJS 是一本古老的大食譜書,我們需要搜索和查找食譜,而ESM是一個新的老式數位應用程式來查看食譜。
CommonJS (CJS)
// Export module.exports = function SayHello() { console.log("Hello World!"); }; // Import const GetHello = require("./hello-script.js"); SayHello(); // "Hello World!"
ECMAScript 模組 (ESM)
// Export export function SayHello() { console.log("Hello World!"); } // Import import { SayHello } from "./hello-script.js"; SayHello();
語法上的主要差異:
CJS: module.exports / require
ESM:匯出/匯入
{ type: "module"; }
有時,您可以使用 ECMAScript 模組,但您匯入的舊套件是用 CommonJS 編寫的。為了處理這些情況,我們有時會確保從 Typescript 檔案產生的輸出 Javascript 程式碼採用通用格式,即使我們已經以 ESM 格式編寫了 Typescript 檔案。
為此,我們在專案的 tsconfig.json 中加入編譯器選項:
// Export module.exports = function SayHello() { console.log("Hello World!"); }; // Import const GetHello = require("./hello-script.js"); SayHello(); // "Hello World!"
然後會發生什麼:
module: "commonjs":使用 CommonJS 模組系統輸出 JavaScript,系統使用 require 和 module.exports。
target: "es6":確保輸出 JavaScript 使用 ES6 語法和 let、const 和箭頭函數等功能。
輸入打字稿代碼:
// Export export function SayHello() { console.log("Hello World!"); } // Import import { SayHello } from "./hello-script.js"; SayHello();
輸出Javascript程式碼:
{ type: "module"; }
以上是NodeJS模組【簡單說明】的詳細內容。更多資訊請關注PHP中文網其他相關文章!