红菊直播官方版-红菊直播免费版app下载-红菊直播永久免费版下载

網(wǎng)站首頁(yè)
手機(jī)版

Javascript 中的 CJS、AMD、UMD 和 ESM 是什么?

更新時(shí)間:2024-03-29 12:47作者:小樂(lè)

最初,Javascript 無(wú)法導(dǎo)入/導(dǎo)出模塊。這是個(gè)問(wèn)題。想象一下將您的應(yīng)用程序編寫在單個(gè)文件中- 這將是一場(chǎng)噩夢(mèng)!然后,比我聰明得多的人嘗試為Javascript 添加模塊化。其中一些是CJS、AMD、UMD 和ESM。您可能聽(tīng)說(shuō)過(guò)其中的一些(還有其他方法,但這些都是大玩家)。我將介紹高級(jí)信息:語(yǔ)法、目的和基本行為。我的目標(biāo)是幫助讀者在看到它們時(shí)認(rèn)出它們。

CJSCJS 是CommonJS 的縮寫。它看起來(lái)是這樣的:

//導(dǎo)入const doSomething=require('./doSomething.js'); //exportingmodule.exports=function doSomething(n) { //do Something} 你們中的一些人可能會(huì)立即從node.js 語(yǔ)法中認(rèn)出CJS。這是因?yàn)镹ode 使用CJS 模塊格式。 CJS同步導(dǎo)入模塊??梢詮膸?kù)node_modules或本地目錄導(dǎo)入。通過(guò)const myLocalModule=require('./some/local/file.js') 或var React=require('react');當(dāng)CJS 導(dǎo)入時(shí),它會(huì)為您提供導(dǎo)入對(duì)象的副本。 CJS 不適用于瀏覽器。必須對(duì)其進(jìn)行翻譯和打包。 AMDAMD 代表異步模塊定義。這是示例代碼:

Define(['dep1', 'dep2'], function (dep1, dep2) { //通過(guò)返回值來(lái)定義模塊值return function () {};});or

//'簡(jiǎn)化的CommonJS 包裝' https://requirejs.org/docs/whyamd.htmldefine(function (require) { var dep1=require('dep1'), dep2=require('dep2'); return function () {};}) ;AMD 異步導(dǎo)入模塊(因此得名)。 AMD 是為前端設(shè)計(jì)的(當(dāng)它被提出時(shí))(而CJS 是后端)。 AMD 語(yǔ)法不如CJS 直觀。我認(rèn)為AMD是CJS完全相反的兄弟。 UMDUMD 代表通用模塊定義。這就是它的樣子(來(lái)源):

(function(root,factory) { if(typeofdefine==='function'define.amd){define(['jquery','underscore'],factory); }elseif(typeofexports==='object' ) { module.exports=工廠(require('jquery'), require('下劃線')); } else { root.Requester=工廠(root.$, root._); }}(this, function ($, _) { //這是我定義模塊實(shí)現(xiàn)的地方var Requester={ //. }; return Requester;}));適用于前端和后端(因此稱為通用)。與CJS 或AMD 不同,UMD 更多的是一種配置多個(gè)模塊系統(tǒng)的模式。使用Rollup/Webpack 等捆綁器時(shí),UMD 通常用作后備模塊。 ESMESM 代表ES 模塊。實(shí)現(xiàn)標(biāo)準(zhǔn)模塊系統(tǒng)是Javascript 的建議。相信很多人都看過(guò):

import React from 'react';其他情況

import {foo, bar} from './myLib';export default function() { //你的函數(shù)};export const function1() {.};export const function2() {.};適用于許多現(xiàn)代瀏覽器它提供了兩全其美的優(yōu)點(diǎn):類似CJS 的簡(jiǎn)單語(yǔ)法和AMD 的異步Tree-shakeable,這要?dú)w功于ES6 的靜態(tài)模塊結(jié)構(gòu)ESM 允許像Rollup 這樣的打包程序刪除不必要的代碼,允許網(wǎng)站發(fā)送更少的代碼以加快加載速度。可以在HTML 中調(diào)用,只需執(zhí)行以下操作: 這可能無(wú)法在所有瀏覽器中100% 工作。

總結(jié)ESM 是最好的模塊模式管理風(fēng)格,這要?dú)w功于它簡(jiǎn)單的語(yǔ)法、異步特性和樹可抖動(dòng)性。 UMD 隨處可用,并且通常在ESM 不起作用時(shí)用作后備方案。 CJS 是同步的,有利于后端。 AMD是異步的,適合前端。謝謝閱讀。 (本文由溫書其武翻譯自Igor Irianto的文章《What Are CJS, AMD, UMD, and ESM in Javascript》,轉(zhuǎn)載請(qǐng)注明出處。原文鏈接:https://irian.to/blogs/what-are-cjs-amd-umd-and-esm-in-javascript/)

為您推薦

美國(guó)最新油電混動(dòng)軍車,和比亞迪唐的模式幾乎一致,美國(guó)油電混合車型推薦

這款ULV最大亮點(diǎn)就是采用了油電混和驅(qū)動(dòng)系統(tǒng)。(ULV的研發(fā)機(jī)構(gòu),主要承擔(dān)美軍單兵作戰(zhàn)系統(tǒng)以及新材料軍用化的研發(fā)任務(wù)。)就在搭載超級(jí)電四驅(qū)技術(shù)的比亞迪混動(dòng)車唐上市后,美國(guó)陸軍開(kāi)始對(duì)ULV(Ultra Light Vehicle)油電混動(dòng)軍車

2024-03-29 12:33

拉文大學(xué)相當(dāng)于中國(guó)什么等級(jí)的大學(xué)?(拉文大學(xué)mba)

拉文大學(xué) (University of La Verne)簡(jiǎn)稱ULV。創(chuàng)立于1891年,是美國(guó)西部最古老的國(guó)家級(jí)大學(xué)之一,建校超過(guò)125周年。其前身是教會(huì)創(chuàng)立的洛茲伯格學(xué)院。1917年洛茲伯格農(nóng)業(yè)社區(qū)更名為拉文,學(xué)院也隨之成為拉文學(xué)院。學(xué)校

2024-03-29 12:27

印度欲制造超過(guò)長(zhǎng)征五號(hào)的大火箭,還在搞太空軍事化(印度重型火箭)

印度一直有個(gè)大國(guó)夢(mèng),在各個(gè)領(lǐng)域都希望能出人頭地,雖然實(shí)際效果不一定像他們想象的那么美好。但是印度的航天水平確實(shí)是比較領(lǐng)先的,比很多發(fā)達(dá)國(guó)家的水平還要強(qiáng)。如果說(shuō)美國(guó)、歐空局、中國(guó)、俄羅斯、日本是航天綜合實(shí)力前五名的話,印度是當(dāng)之無(wú)愧的第六名,

2024-03-29 12:12

美國(guó)的ULV,俄羅斯的GAZ,這些軍用越野車,每輛都讓人熱血沸騰!,俄羅斯最新軍用越野車

今天我們來(lái)說(shuō)點(diǎn)不一樣的,越野車大家都司空見(jiàn)慣,但軍用越野車相信各位都很陌生吧,它們只為部隊(duì)服務(wù),很少出現(xiàn)在大眾視野,但各個(gè)性能不俗隨便來(lái)一輛都能秒殺牧馬人、普拉多、猛禽等熱門越野車,今天就讓我們看看全球各式各樣的軍用越野車。美國(guó):ULV這輛

2024-03-29 11:57

美軍打造下代軍車:混合動(dòng)力ULV,混合動(dòng)力軍艦

悍馬終結(jié)者:美軍打造下代軍車:混合動(dòng)力ULV美軍打造下代軍車:混合動(dòng)力ULV美軍打造下代軍車:混合動(dòng)力ULV美軍打造下代軍車:混合動(dòng)力ULV美軍打造下代軍車:混合動(dòng)力ULV美軍打造下代軍車:混合動(dòng)力ULV美軍打造下代軍車:混合動(dòng)力ULV美軍

2024-03-29 11:45

世界各國(guó)軍用越野車介紹(16):美國(guó) ULV裝甲突擊車 美國(guó)裝甲車越野車有哪些

#世界車中國(guó)造# ULV裝甲突擊車,全稱為“輕型通用型裝甲車(Ultra Light Vehicle)”,是一款由美國(guó)特種裝備公司BAE系統(tǒng)公司開(kāi)發(fā)的多功能車輛。該車輛主要被設(shè)計(jì)用于城市反恐、邊境巡邏、特戰(zhàn)作戰(zhàn)等場(chǎng)景下的裝甲作戰(zhàn)和行動(dòng)。重約

2024-03-29 11:32

加載中...