在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    前端JavaScript – 關(guān)于CJS,AMD,UMD,ESM,看這里一次性搞懂

    前端JavaScript - 關(guān)于CJS,AMD,UMD,ESM,看這里一次性搞懂

    看了不少關(guān)于這個話題的文章,很多都說不清楚,老是Get不到重點。下面就把他們總結(jié)一下,讓大家不再疑惑。

    開始的時候,JavaScript沒有import/export 模塊的方法。這是個很大的問題,想想如果現(xiàn)在讓你把所有代碼寫在一個文件里,會是什么情況,你愿意去維護(hù)么?

    然后一些天才想了不同的方法把模塊系統(tǒng)引入了JavaScript。最出名的就是這些,CJS, AMD, UMD, ESM

    下面來從這些方面一一介紹他們:語法,目的和基本的行為。

    CJS

    CJS是CommonJS的縮寫。它看起來像下圖:

    • 如果你用過Node.js的話,應(yīng)該很熟悉這種語法,它就是Node.js的模塊系統(tǒng)
    • CJS是同步引入模塊
    • 你可以從一個文件,或者node_modules引入模塊,下面兩種都可以
    • 當(dāng)使用CJS引入,它會給你一個被引入對象的拷貝
    • CJS不被瀏覽器支持,只能用于后端。如果要在前端使用,必須要先被編譯和打包。

    AMD

    AMD是Asynchronous Module Definition的縮寫。示例代碼如下:

    或者

    • AMD是通過異步的方式引入模塊的
    • AMD是為前端設(shè)計的
    • AMD 語法不如 CJS 直觀

    UMD

    UMD是Universal Module Definition的縮寫,示例代碼如下:

    • UMD可以在前端和后端同時工作。(估計這就是Universal的由來吧,通用)
    • UMD更像是一種配置多個模塊系統(tǒng)的模式。
    • UMD通常用于打包工具打包后的代碼實現(xiàn),比如Rollup/Webpack之類的

    ESM

    ESM代表EcmaScript Module。它是JavaScript規(guī)范最新提出的模塊系統(tǒng)。你肯定見過這種樣子的代碼:

    • ESM被現(xiàn)代瀏覽器原生支持
    • 它語法簡單(像CJS),并且是異步導(dǎo)入(像AMD),有它倆共同的優(yōu)點
    • 由于ES6的靜態(tài)模塊結(jié)構(gòu),它可以做Tree-shakeable。那些打包工具,比如Rollup可以幫你刪掉無用代碼,這樣你就能得到更精簡的build,從而提高性能。
    • 它還可以被使用在HTML里,比如下面這樣

    總結(jié)

    • ESM 是最好的模塊系統(tǒng)。它語法簡單,原生異步并且可以Tree-shakeable
    • UMD 前后端通用,可以作為不支持ESM環(huán)境的替代系統(tǒng)。
    • CJS 是同步的,可以在后端使用。
    • AMD 是異步的,可以在前端使用。
    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    (0)
    用戶投稿
    上一篇 2022年6月20日 13:24
    下一篇 2022年6月20日 13:24

    相關(guān)推薦

    • 閃退是什么原因造成的(蘋果手機(jī)閃退解決方法)

      你的iPhone出現(xiàn)過應(yīng)用程序閃退情況嗎?手機(jī)出現(xiàn)閃退情況,相信很多用戶都遇到過。 跟好友微信通話時,突然退出了程序;正打著游戲,搶救隊友時,你卻閃退掉線了……遇到APP閃退情況,…

      2022年4月14日
    • 電視盒子有什么用?一起來看一看,電視盒子有必要買嗎?

      在現(xiàn)代人家里,看電視依然是最常見的娛樂方式,我們現(xiàn)在家里用的電視機(jī)大部分都是智能電視,智能電視都會內(nèi)置一個電視主機(jī),這可以讓電視機(jī)擁有智能系統(tǒng),可以聯(lián)網(wǎng)看網(wǎng)絡(luò)上的電視資源,但和智能…

      2022年7月2日
    • python中的 = "":的作用

      創(chuàng)建一個名為test.py的腳本文件。寫一句簡單的代碼如下。 import str # 導(dǎo)入整個str模塊 創(chuàng)建一個名為str.py腳本文件,內(nèi)容如下。 print(__name_…

      2022年6月25日
    • 文石BOOX NovaAirC彩色墨水屏電子閱讀器使用簡評

      本文轉(zhuǎn)自新浪微博用戶“李斌”對BOOX Nova Air C的評測,已征得作者授權(quán)發(fā)布。 作為電子書的老用戶,各式黑白屏閱讀器已經(jīng)用了十幾年,彩屏一直在留意,不過總是覺得色彩沒有達(dá)…

      2022年6月18日
    • 「Python編程規(guī)范」為Python代碼添加注釋

      功能要求 為Python代碼添加注釋,對Python程序代碼進(jìn)行說明。 實例代碼 ”’多行注釋開始 下面的代碼根據(jù)變量x的值計算y 注意代碼中使用縮進(jìn)表示代…

      2022年6月14日
    • 抄書第3天:活出自己的風(fēng)格,不為誰而活

      做自己喜歡的事,哪怕別人都笑你傻,你也完全可以全身心地去做,只要你喜歡,只要做這件事會讓你快樂 只有你的快樂才是你該在乎的,別怕別人說什么,除了幫你快樂的話,你都可以不聽。這樣你的…

      2022年5月5日
    • 迷信輔助駕駛系統(tǒng)導(dǎo)致重大交通事故 可構(gòu)成交通肇事罪

      據(jù)新聞報道,8月10日,在浙江寧波,某品牌新能源汽車在高架橋上將一男子撞飛的視頻引起全網(wǎng)熱議,肇事車主使用該車輔助駕駛功能行車,相關(guān)系統(tǒng)未能識別障礙物,再加上車主分神,導(dǎo)致慘劇發(fā)生…

      2022年8月13日
    • 機(jī)場跑道代碼中的數(shù)字有什么含義?

      如果你仔細(xì)觀察,還會發(fā)現(xiàn)在機(jī)場跑道的盡頭會有一組數(shù)字,比如下面這張圖。 你好,民航醬油君為您解答。 首先有這種數(shù)字的跑道都是起降跑道,是為了使飛行員在起降過程中準(zhǔn)確辨認(rèn)跑道,尤其是…

      2022年3月25日
    • 在Saas系統(tǒng)下多租戶零腳本分表分庫讀寫分離解決方案

      前言 您是否有以下場景: 多租戶系統(tǒng),數(shù)據(jù)庫級別隔離 大數(shù)據(jù)量,需要分表分庫(動態(tài)添加),分庫分表全自動維護(hù)處理 租戶之前可能需要使用不同的數(shù)據(jù)庫模式,譬如有些租戶要求用oracl…

      2022年7月27日
    • 一些可以顯著提高大型 Java 項目啟動速度的嘗試

      我們線上的業(yè)務(wù) jar 包基本上普遍比較龐大,動不動一個 jar 包上百 M,啟動時間在分鐘級,拖慢了我們在故障時快速擴(kuò)容的響應(yīng)。于是做了一些分析,看看 Java 程序啟動慢到底慢…

      2022年7月11日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息