摘要:是中提供的模塊化編程的方案,是中新增。所以人們產(chǎn)生了這樣的需求,希望有支持兩種風(fēng)格的通用模式,于是通用模塊規(guī)范誕生了。模塊化對(duì)模塊進(jìn)行導(dǎo)出導(dǎo)入的
AMD、CMD、CommonJs、UMD是ES5中提供的模塊化編程的方案,import/export是ES6中新增。
1.AMD-異步模塊定義
AMD是RequireJS在推廣過(guò)程中對(duì)模塊定義的規(guī)范化產(chǎn)出,它是一個(gè)概念,RequireJS是對(duì)這個(gè)概念的實(shí)現(xiàn),就好比JavaScript語(yǔ)言是對(duì)ECMAScript規(guī)范的實(shí)現(xiàn)。AMD是一個(gè)組織,RequireJS是在這個(gè)組織下自定義的一套腳本語(yǔ)言。
RequireJS:是一個(gè)AMD框架,可以異步加載JS文件,按照模塊加載方法,通過(guò)define()函數(shù)定義,第一個(gè)參數(shù)是一個(gè)數(shù)組,里面定義一些需要依賴(lài)的包,第二個(gè)參數(shù)是一個(gè)回調(diào)函數(shù),通過(guò)變量來(lái)引用模塊里面的方法,最后通過(guò)return來(lái)輸出。
是一個(gè)依賴(lài)前置、異步定義的AMD框架(在參數(shù)里面引入js文件),在定義的同時(shí)如果需要用到別的模塊,在最前面定義好即在參數(shù)數(shù)組里面進(jìn)行引入,在回調(diào)里面加載。
require([module], callback);
2.CMD---是SeaJS在推廣過(guò)程中對(duì)模塊定義的規(guī)范化產(chǎn)出,是一個(gè)同步模塊定義,是SeaJS的一個(gè)標(biāo)準(zhǔn),SeaJS是CMD概念的一個(gè)實(shí)現(xiàn),SeaJS是淘寶團(tuán)隊(duì)提供的一個(gè)模塊開(kāi)發(fā)的js框架
通過(guò)define()定義,沒(méi)有依賴(lài)前置,通過(guò)require加載jQuery插件,CMD是依賴(lài)就近,在什么地方使用到插件就在什么地方require該插件,即用即返,這是一個(gè)同步的概念。
3.commonJS規(guī)范---是通過(guò)module.exports定義的,在前端瀏覽器里面并不支持module.exports,通過(guò)node.js后端使用的。Nodejs端是使用CommonJS規(guī)范的,前端瀏覽器可以利用browserify插件支持commonJS,可以講js文件打包到一個(gè)main.js,所以不會(huì)出現(xiàn)瀏覽require新模塊的時(shí)候,需要異步加載的情況,更不會(huì)出現(xiàn)瀏覽器假死。
瀏覽器不兼容CommonJS的根本原因,在于缺少四個(gè)Node.js環(huán)境的變量(module、exports、require、global)
輸出方式有2種:默認(rèn)輸出---module export 和帶有名字的輸出---exports.area。
4.UMD-通用模塊規(guī)范
既然CommonJs和AMD風(fēng)格一樣流行,似乎缺少一個(gè)統(tǒng)一的規(guī)范。所以人們產(chǎn)生了這樣的需求,希望有支持兩種風(fēng)格的“通用”模式,于是通用模塊規(guī)范(UMD)誕生了。為了保證通用性,犧牲的易用性,這個(gè)模式略難看,但是它兼容了AMD和CommonJS,同時(shí)還支持老式的“全局”變量規(guī)范。
5.ES6模塊化---export/import對(duì)模塊進(jìn)行導(dǎo)出導(dǎo)入的
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/101571.html
摘要:二模塊化誤區(qū)加快加載和執(zhí)行的速度,一直是前端優(yōu)化的一個(gè)熱點(diǎn)。結(jié)果文件減少,也達(dá)到了預(yù)期的效果。避免不必要的延遲。最后再根據(jù)文件的功能類(lèi)型,來(lái)決定是放在頁(yè)面的頭部還是尾部。 注:本文是純技術(shù)探討文,無(wú)圖無(wú)笑點(diǎn),希望您喜歡 一.前言 軟件行業(yè)極其缺乏前端人才這是圈內(nèi)的共識(shí)了,某種程度上講,同等水平前端的工資都要比后端高上不少,而圈內(nèi)的另一項(xiàng)共識(shí)則是——網(wǎng)頁(yè)是公司的臉面! 幾年前,谷歌的一項(xiàng)...
摘要:模塊演化簡(jiǎn)史從屬于筆者的開(kāi)發(fā)基礎(chǔ)與工程實(shí)踐。首個(gè)采樣該設(shè)計(jì)模式的界面庫(kù)當(dāng)屬,其是創(chuàng)建于年。允許我們定義模塊,并且在顯式地聲明其依賴(lài)模塊而由框架完成自動(dòng)注入。而最后的模塊化規(guī)范定義于年正式發(fā)布,也就是被命名為。 JavaScript 模塊演化簡(jiǎn)史 從屬于筆者的 Web 開(kāi)發(fā)基礎(chǔ)與工程實(shí)踐。本文主要總結(jié)自 The Evolution of JavaScript Modularity、Nat...
摘要:模塊化編程,已經(jīng)成為一個(gè)迫切的需求。隨著網(wǎng)站功能逐漸豐富,網(wǎng)頁(yè)中的也變得越來(lái)越復(fù)雜和臃腫,原有通過(guò)標(biāo)簽來(lái)導(dǎo)入一個(gè)個(gè)的文件這種方式已經(jīng)不能滿足現(xiàn)在互聯(lián)網(wǎng)開(kāi)發(fā)模式,我們需要團(tuán)隊(duì)協(xié)作模塊復(fù)用單元測(cè)試等等一系列復(fù)雜的需求。 隨著網(wǎng)站逐漸變成互聯(lián)網(wǎng)應(yīng)用程序,嵌入網(wǎng)頁(yè)的Javascript代碼越來(lái)越龐大,越來(lái)越復(fù)雜。網(wǎng)頁(yè)越來(lái)越像桌面程序,需要一個(gè)團(tuán)隊(duì)分工協(xié)作、進(jìn)度管理、單元測(cè)試等等......開(kāi)發(fā)...
摘要:掛機(jī)科了次使用這個(gè)結(jié)構(gòu),匿名函數(shù)就有了自己的執(zhí)行環(huán)境或閉包,然后我們立即執(zhí)行。注意,匿名函數(shù)的圓括號(hào)是必需的,因?yàn)橐躁P(guān)鍵字開(kāi)頭的語(yǔ)句通常被認(rèn)為是函數(shù)聲明請(qǐng)記住,中不能使用未命名的函數(shù)聲明。 這是專(zhuān)門(mén)探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 20 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過(guò)了前面的章節(jié),可以在這里找到它們: ...
摘要:作為新手,發(fā)現(xiàn)對(duì)于其的模塊機(jī)制,不是很理解。的概念出現(xiàn)有效規(guī)范了的模塊化規(guī)范。不再需要對(duì)象作為命名空間比如對(duì)象,未來(lái)這些功能可以通過(guò)模塊提供。瀏覽器使用模塊的語(yǔ)法如下導(dǎo)出對(duì)象和變量導(dǎo)出類(lèi)對(duì)象引入加載機(jī)制詳見(jiàn)引用資料高靜的并行加載與順序執(zhí)行 1. 概述 js發(fā)展初期暴露了其缺陷:缺乏模塊,后來(lái)提出了commonJS規(guī)范來(lái)規(guī)范其模塊的規(guī)范。作為JavaScript新手,發(fā)現(xiàn)對(duì)于其JavaS...
摘要:作為新手,發(fā)現(xiàn)對(duì)于其的模塊機(jī)制,不是很理解。的概念出現(xiàn)有效規(guī)范了的模塊化規(guī)范。不再需要對(duì)象作為命名空間比如對(duì)象,未來(lái)這些功能可以通過(guò)模塊提供。瀏覽器使用模塊的語(yǔ)法如下導(dǎo)出對(duì)象和變量導(dǎo)出類(lèi)對(duì)象引入加載機(jī)制詳見(jiàn)引用資料高靜的并行加載與順序執(zhí)行 1. 概述 js發(fā)展初期暴露了其缺陷:缺乏模塊,后來(lái)提出了commonJS規(guī)范來(lái)規(guī)范其模塊的規(guī)范。作為JavaScript新手,發(fā)現(xiàn)對(duì)于其JavaS...
閱讀 3749·2023-04-25 19:56
閱讀 1732·2021-11-12 10:36
閱讀 1849·2021-11-08 13:19
閱讀 1601·2019-08-30 14:06
閱讀 3088·2019-08-30 11:01
閱讀 1804·2019-08-29 13:23
閱讀 2794·2019-08-29 11:18
閱讀 3500·2019-08-26 13:35