簡體   English   中英

.js 和 .mjs 文件有什么區別?

[英]What is the difference between .js and .mjs files?

我已經開始研究基於 Node.js 的現有項目。 我只是想了解執行流程,我遇到了一些*.mjs文件。 我搜索了網頁,發現這些是基於模塊的 JS 文件。

我想知道它與*.js文件有什么不同(它有什么好處)?

它表示一個 ES6 模塊文件。


Node.js 的原始模塊系統是CommonJs (它使用requiremodule.exports )。

自創建 Node.js 以來, ECMAScript 模塊系統(使用importexport )已成為標准,Node.js 增加了對它的支持。

Node.js 會將.cjs文件視為 CommonJS 模塊,將.mjs文件視為 ECMAScript 模塊。 它將.js文件視為項目的默認模塊系統(這是 CommonJS,除非package.json顯示"type": "module", )。

參見: ES6 模塊系統和 CommonJs 的區別

.MJS 文件

  • mjs 是 EcmaScript 模塊的擴展
  • MJS 文件是包含用於 Node.js 應用程序的 ES 模塊(ECMAScript 模塊)的源代碼文件。
  • MJS 文件是用 JavaScript 編寫的,也可以在 Node.js 上下文之外使用 .JS 擴展名。

  • ES 模塊允許 Web 和應用程序開發人員將代碼組織成更小的可重用組件。

ECMAScript 6 (ES6) 引入了 ES Modules 規范,為在 JavaScript 中實現模塊提供了標准。 截至 2018 年,所有主要的 Web 瀏覽器都支持 ES 模塊。

然而,模塊化 JavaScript 的流行早於 ES6。 Node.js 是一個 JavaScript 運行環境,使用 CommonJS 作為模塊的規范。 因為很多現有的應用程序都是用 CommonJS 構建的,所以當 Node.js 添加對原生 ES 模塊的支持時,它有爭議地引入了 MJS 文件擴展名來區分兩者並防止應用程序崩潰。

注意:一些開發人員非正式地將 MJS 文件稱為“邁克爾傑克遜腳本”文件。

為了清楚起見 至於開發人員/人類,很容易區分模塊文件(.mjs)和普通 javascript 文件(.js)......因為即使您檢查文件中的代碼也並不總是容易確定。

還有一些性能優勢,讓您有更多理由考慮使用它。 V8(為 Google Chrome 提供支持的 JavaScript 引擎)建議使用 .mjs,但這仍取決於您的情況。 如果您想了解更多它的優點,請查看https://v8.dev/features/modules#mjs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM