日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JavaScript的大分水嶺:CommonJS vs ES模塊

來源: 責編: 時間:2023-11-08 09:10:29 267觀看
導讀所周知,JavaScript社區喜歡進行熱烈的辯論。四年來,我們如何組織代碼的問題上一直存在一個分歧——這是一個基本但令人意外地有爭議的問題,繼續將開發者分開。這種分歧圍繞著 CommonJS 和 ES 模塊,這是兩個用于劃分 JavaS

40K28資訊網——每日最新資訊28at.com

所周知,JavaScript社區喜歡進行熱烈的辯論。四年來,我們如何組織代碼的問題上一直存在一個分歧——這是一個基本但令人意外地有爭議的問題,繼續將開發者分開。40K28資訊網——每日最新資訊28at.com

這種分歧圍繞著 CommonJS 和 ES 模塊,這是兩個用于劃分 JavaScript代碼的主要系統。40K28資訊網——每日最新資訊28at.com

理解這個分歧

當JavaScript最初被發明時,它的主要角色是作為Web瀏覽器的腳本語言。但是,隨著Node.js的出現,似乎展現出了一系列的可能性。40K28資訊網——每日最新資訊28at.com

現在,它不僅僅是一個瀏覽器的語言。它可以為服務器和其他應用程序提供動力。40K28資訊網——每日最新資訊28at.com

在那種情境下,瀏覽器中的所有東西都在全局作用域中,你不必過多地考慮模塊。但是構建一個復雜的服務器應用程序并不那么簡單。你不能把所有的代碼都打包在一個文件中——那將是一個噩夢。40K28資訊網——每日最新資訊28at.com

出現的解決方案?一個叫做CommonJS的模塊系統。40K28資訊網——每日最新資訊28at.com

const moduleA = require('./moduleA');

CommonJS 使用一個叫做 require 的函數,允許你從其他文件中提取 JavaScript并訪問從它們導出的函數。40K28資訊網——每日最新資訊28at.com

然而,JavaScript 很快用ES6——適應了這些想法,以滿足Web應用程序的需求。他們引入了import和export。40K28資訊網——每日最新資訊28at.com

import moduleA from './moduleA';

現在,你可能會納悶,為什么JavaScript沒有堅持已經在使用的require調用呢?40K28資訊網——每日最新資訊28at.com

require 的問題在于它是同步的,并假設所有文件都已經準備好。但是,在瀏覽器上下文中,你可能需要等待外部資源時,require的同步性質會讓系統崩潰。40K28資訊網——每日最新資訊28at.com

因此,分裂開始了。40K28資訊網——每日最新資訊28at.com

兼容性難題

大多數開發者轉向ES模塊,因為它們不僅是新穎的,而且很有趣。但一個相當大的群體仍然堅持使用CommonJS。這種分裂導致了兼容性問題。40K28資訊網——每日最新資訊28at.com

如果你在ES模塊內部運行,你可以沒有問題地導入CommonJS。但是,使用CommonJS導入ES模塊是不行的——除非你采用一個模擬導入的異步函數解決方法。40K28資訊網——每日最新資訊28at.com

const moduleA = await import('./moduleA');

打包器的作用

像Babel或TypeScript這樣的打包器或轉譯器為這個復雜問題增加了另一層,你寫的內容取決于你發出的內容。你可以用ES模塊寫,但發出 CommonJS。40K28資訊網——每日最新資訊28at.com

// Babel或TypeScript編譯器將ES模塊轉換為CommonJSconst moduleA = require('./moduleA');

如果你在構建的代碼中看到 require調用,你就是在發出 CommonJS,而import和export的存在表示你是ES模塊的未來的一部分。40K28資訊網——每日最新資訊28at.com

未來屬于ES模塊

在吸引了開發者注意的新工具中,bun 是亮點。bun 的主要亮點在于,它已經解決了CommonJS 和 ES 模塊之間的互操作性問題。但是,這個修復并不完全符合規范——他們只是為了讓它工作而修補了CommonJS和ES模塊之間的問題。40K28資訊網——每日最新資訊28at.com

由于支持這些不同的模塊系統,JavaScript工具鏈可能非常復雜。40K28資訊網——每日最新資訊28at.com

采用ES模塊,你正在簡化Web開發。所有的Node.js長期支持版本現在都使用ES模塊,這標志著一個明確的海變。40K28資訊網——每日最新資訊28at.com

盡可能使用ES模塊。現在是時候結束這種分裂,擁抱未來了。現代JavaScript,統一的JavaScript。40K28資訊網——每日最新資訊28at.com

如果你一直在使用或考慮使用 CommonJS,可能是時候仔細看看你的代碼了。未來是一個有ES模塊的地方,我們每個人都有責任使 JavaScript 的景觀變得更加簡單和有趣。40K28資訊網——每日最新資訊28at.com

40K28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17641-0.htmlJavaScript的大分水嶺:CommonJS vs ES模塊

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 探索人工智能的世界:構建智能問答系統之前置篇

下一篇: 必讀!SpringBoot接口參數校驗N種實用技巧大揭秘

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 岳普湖县| 库尔勒市| 灵川县| 克东县| 宜州市| 神农架林区| 扬中市| 白山市| 刚察县| 济阳县| 城步| 新田县| 平度市| 台山市| 兴安盟| 丰顺县| 平安县| 南郑县| 庆元县| 宁化县| 南丹县| 桑植县| 茶陵县| 金溪县| 徐汇区| 永康市| 启东市| 土默特左旗| 鹰潭市| 山东省| 玉环县| 剑川县| 平顶山市| 隆子县| 石嘴山市| 岳阳市| 会泽县| 吉水县| 波密县| 汾阳市| 康定县|