成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
當JavaScript最初被發明時,它的主要角色是作為Web瀏覽器的腳本語言。但是,隨著Node.js的出現,似乎展現出了一系列的可能性。

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

這種分歧圍繞著 CommonJS 和 ES 模塊,這是兩個用于劃分 JavaScript代碼的主要系統。

理解這個分歧

當JavaScript最初被發明時,它的主要角色是作為Web瀏覽器的腳本語言。但是,隨著Node.js的出現,似乎展現出了一系列的可能性。

現在,它不僅僅是一個瀏覽器的語言。它可以為服務器和其他應用程序提供動力。

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

出現的解決方案?一個叫做CommonJS的模塊系統。

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

CommonJS 使用一個叫做 require 的函數,允許你從其他文件中提取 JavaScript并訪問從它們導出的函數。

然而,JavaScript 很快用ES6——適應了這些想法,以滿足Web應用程序的需求。他們引入了import和export。

import moduleA from './moduleA';

現在,你可能會納悶,為什么JavaScript沒有堅持已經在使用的require調用呢?

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

因此,分裂開始了。

兼容性難題

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

如果你在ES模塊內部運行,你可以沒有問題地導入CommonJS。但是,使用CommonJS導入ES模塊是不行的——除非你采用一個模擬導入的異步函數解決方法。

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

打包器的作用

像Babel或TypeScript這樣的打包器或轉譯器為這個復雜問題增加了另一層,你寫的內容取決于你發出的內容。你可以用ES模塊寫,但發出 CommonJS。

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

如果你在構建的代碼中看到 require調用,你就是在發出 CommonJS,而import和export的存在表示你是ES模塊的未來的一部分。

未來屬于ES模塊

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

由于支持這些不同的模塊系統,JavaScript工具鏈可能非常復雜。

采用ES模塊,你正在簡化Web開發。所有的Node.js長期支持版本現在都使用ES模塊,這標志著一個明確的海變。

盡可能使用ES模塊?,F在是時候結束這種分裂,擁抱未來了?,F代JavaScript,統一的JavaScript。

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

責任編輯:姜華 來源: 大遷世界
相關推薦

2011-12-13 20:28:40

蘋果

2010-03-13 10:13:04

2019-01-07 14:13:32

云計算SaaS分水嶺

2020-08-23 11:50:58

互聯網數據技術

2009-02-23 09:34:54

畢業生職業發展職場定位

2010-01-18 10:33:42

2020-12-14 10:47:30

云計算云原生容器

2013-07-01 00:00:00

程序員SAP顧問

2021-02-21 11:56:01

云計算阿里云亞馬遜

2023-11-22 15:26:24

OpenAI人工智能

2025-07-03 14:10:37

2024-08-26 08:36:53

2023-06-07 11:23:36

VRAR

2022-07-26 13:53:23

網絡安全事件網絡安全

2017-01-13 08:59:38

數據分析運營技能

2020-10-12 10:11:39

IT云計算技術

2025-04-24 15:26:22

2015-01-05 10:31:18

javaScript

2025-02-08 09:15:00

2014-11-20 17:21:33

管理軟件Inspur Worl
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩亚洲三区 | 久久亚洲视频网 | 国产成人av在线播放 | 中文字幕一区在线观看视频 | 99精品视频在线 | 中文字幕日韩一区 | 99热视| 亚洲欧美日韩在线一区二区 | 欧美在线视频一区 | 有码在线 | 国产一区免费 | 久久久久国产精品一区 | 久久综合亚洲 | 午夜在线视频一区二区三区 | 韩三级在线观看 | 亚洲国产欧美日韩 | 国产精品视频网 | 日本超碰 | 黑人巨大精品欧美一区二区一视频 | 免费欧美视频 | 黄网站在线观看 | 久久久久久99 | 日韩欧美在线观看 | 一级少妇女片 | 中文字幕视频在线观看 | 日韩a视频 | 日韩第一区 | 成人h动漫亚洲一区二区 | 亚洲中国字幕 | 国产精品免费视频一区 | 中文字幕精品一区久久久久 | 日本一区二区在线视频 | 精产国产伦理一二三区 | 免费一级做a爰片久久毛片潮喷 | 亚洲一区三区在线观看 | 欧美精品在线一区二区三区 | 久久一区二区免费视频 | 午夜精品久久 | 国产一区亚洲二区三区 | 中文字幕综合 | 五月天国产视频 |