CommonJs,AMD,CMD是什麼?
前端模組化的概念已經撲面而來,為什麼要模組化?
1.命名衝突
2.檔案依賴
為了解決上面的問題,我們使用閉包,名稱空間,還要考慮js檔案的載入順序,稍不留神就會出錯。
然而模組化的程式碼幫我們一次性解決了上面的問題,我們可以隨心所欲的命名,隨心所欲的引用,不用考慮載入順序,如此這般的清爽。
CommonJS,AMD(非同步模組定義),CMD(通用模組定義)這三個都是JS模組化過程中產生的規範,其中CommonJS是伺服器端的,同步方式,應用的例子最常見的是NodeJS。而AMD和CMD是瀏覽器端的,非同步方式,最常見的是requireJs和seaJs。
CommonJS
過去,js一直應用在瀏覽器端,隨著web2.0和Html5的到來,可以供js呼叫的介面越來越豐富,js在瀏覽器能做的事情也越來越多。但是在後端,js卻因為一直沒有相關的標準而沒有用武之地。
CommonJS規範的提出,彌補了這種缺憾。規範涵蓋了模組,二進位制,Buffer,I/O流,程序環境,檔案系統,套接字,單元測試,包管理等。有了這些,才有了Node的出現。現在,Node的應用越來越廣泛,也促進了CommonJS規範的完善,它們互相起到了相輔相成的作用。因為commonJS應用在服務端,所以在引用模組(一個檔案就是一個模組)的時候,使用同步方式也不會影響到讀取的速度,但是在瀏覽器端,就要用到非同步讀取的AMD,CMD規範了。
http://www.commonjs.org/specs/ 這是commonJS的官網,網站對CommonJS的定義就是javascript:not just for browers any more!
這是CommonJS模組標準應用的一個簡單地例子,exports對外提供模組內部的方法,require用來引用模組,獲取其中通過exports對外提供的方法
AMD和CMD
AMD 是 RequireJS 在推廣過程中對模組定義的規範化產出,CMD是SeaJS 在推廣過程中對模組定義的規範化產出。
兩者的區別就是對所依賴模組的載入時間不同。AMD對依賴的模組式提前執行,CMD對於依賴模組是延遲執行。
//AMD
define(['./a','./b'], function (a, b) {
a.foo();
b.foo();
});
從上邊的程式碼裡就可以看到兩者的區別,不過AMD現在也支援延遲載入。//CMD define(function (requie, exports, module) { var a = require('./a'); a.foo(); var b = requie('./b'); b.foo(); });
相關推薦
淺析JS中的模塊規範(CommonJS,AMD,CMD) http://www.2cto.com/kf/201411/348276.html
cpu 重要 mat 只有一個 targe () actor cti 最重要的 如果你聽過js模塊化這個東西,那麽你就應該聽過或CommonJS或AMD甚至是CMD這些規範咯,我也聽過,但之前也真的是聽聽而已。 現在就看看吧,這些規範到底是啥東西,幹嘛的。
理解JS中的模塊規範(CommonJS,AMD,CMD)
site 繼續 arr 包管理器 color sea 文件依賴 避免 說我 隨著互聯網的飛速發展,前端開發越來越復雜。本文將從實際項目中遇到的問題出發,講述模塊化能解決哪些問題,以及如何使用 Sea.js 進行前端的模塊化開發。 惱人的命名沖突 我們從一個簡單的習慣
再談 JS中的模組規範(CommonJS,AMD,CMD)來自玉伯的seajs分析
隨著網際網路的飛速發展,前端開發越來越複雜。本文將從實際專案中遇到的問題出發,講述模組化能解決哪些問題,以及如何使用 Sea.js 進行前端的模組化開發。惱人的命名衝突我們從一個簡單的習慣出發。我做專案時,常常會將一些通用的、底層的功能抽象出來,獨立成一個個函式,比如funct
模組化開發,AMD,CMD,Commonjs規範
angular、vue、react三大框架模組管理遵循的規範 webpack打包成一個檔案,一次都載入完,需要哪個就去執行哪個。不像傳統的頁面,引入很多檔案,要一個個按順序載入。 生成的都是閉包,變數隔離,並能避免汙染作用域。 vue,angularx,r
CommonJS,AMD,CMD,es6 modules 區別
隨著前端js程式碼複雜度的提高,JavaScript模組化這個概念便被提出來,前端社群也不斷地實現前端模組化,直到es6對其進行了規範,下面就介紹JavaScript模組化 CommonJS,AMD,CMD 都是Javascript 語言程式設計中,為了模組定義程式碼而產生的規範。 commonjs是用在
CommonJs,AMD,CMD是什麼?
前端模組化的概念已經撲面而來,為什麼要模組化? 1.命名衝突 2.檔案依賴 為了解決上面的問題,我們使用閉包,名稱空間,還要考慮js檔案的載入順序,稍不留神就會出錯。 然而模組化的程式碼幫我們一次性解決了上面的問題,我們可以隨心所欲的命名,隨心所欲的引用,不用考慮載入順序,
CommonJS,AMD,CMD區別
com commonj -c 使用 cmd sync syn 服務器 模塊 AMD (Asynchromous Module Definition) 異步模塊定義 CMD (Common Module Definition) 通用模塊定義 CommonJs 是服務器端模塊的
js模組化,AMD與CMD的區別
最近在研究cmd和amd,在網上看到一篇不錯的文章,整理下看看。 在JavaScript發展初期就是為了實現簡單的頁面互動邏輯,寥寥數語即可;如今CPU、瀏覽器效能得到了極大的提升,很多頁面邏輯遷移到了客戶端(表單驗證等),隨著web2.0時代的到來,Ajax技術得到
前端模組化,AMD與CMD的區別
最近在研究cmd和amd,在網上看到一篇不錯的文章,整理下看看。 在JavaScript發展初期就是為了實現簡單的頁面互動邏輯,寥寥數語即可;如今CPU、瀏覽器效能得到了極大的提升,很多頁面邏輯遷移到了客戶端(表單驗證等),隨著web2.0時代的到來,Ajax
前端模組化,AMD和CMD的區別總結
AMD和CMD都是瀏覽器端的js模組規範,2者的區別總結如下: 1、AMD推崇依賴前置,CMD推崇就近依賴 //AMD: m
前端模組化IIFE,commonjs,AMD,UMD,ES6 Module規範超詳細講解
[TOC] ## 為什麼前端需要模組化 在沒有模組化的時候,多個指令碼引入頁面,會造成諸多問題,比如: - 多人協同開發的時候,系統中可能會引入很多js指令碼,這些js會定義諸多全域性變數,這時候很容易出現變數名覆蓋的問題 ```html
前端模塊化的一些理解-commonJs、AMD和CMD
() urn fig comm tor 實現 ports ont 相對 ---恢復內容開始--- 前端模塊化規範有三種:CommonJs\AMD\CMD CommonJs 用於服務器端 AMD 用於瀏覽器環境,是RequireJS在推廣過程中對模塊定義的規範化產出
CommonJS、AMD、CMD、NodeJs、RequireJS到底有什麽聯系?
模塊化 包管理 conf 解決辦法 寫上 開發者 ase 例子 頁面 一、CommonJS 1.一開始大家都認為JS不強大,沒什麽用,官方定義的API只能構建基於瀏覽器的應用程序,CommonJS就按耐不住了,CommonJS API定義很多普通應用程序(主要指非瀏覽
CommonJS、AMD和CMD區別
環境 add 編程 style script webp git 加載模塊 AS 本文參考自:https://www.cnblogs.com/chenguangliang/p/5856701.html 1、CommonJS NodeJS是CommonJS規範的實現,web
再嘮叨JS模塊化加載之CommonJS、AMD、CMD、ES6
scrip 用例 fun 理想 str text 引用 寫到 加載完成 Javascript模塊化編程,已經成為一個迫切的需求。理想情況下,開發者只需要實現核心的業務邏輯,其他都可以加載別人已經寫好的模塊。 Javascript社區做了很多努力,在現有的運行環境中,實現”模
JavaScript模塊化 --- Commonjs、AMD、CMD、ES6 modules
con scroller exports 打包 www. pretty modules 前端 depends JavaScript模塊化 --- Commonjs、AMD、CMD、ES6 modules 2017.08.25 11:49 6666瀏覽 轉載:https
CommonJS、AMD、CMD、NodeJs、RequireJS到底有什麼聯絡?
一、CommonJS 1.一開始大家都認為JS不強大,沒什麼用,官方定義的API只能構建基於瀏覽器的應用程式,CommonJS就按耐不住了,CommonJS API定義很多普通應用程式(主要指非瀏覽器的應用)使用的API,從而填補了這個空白。它的終極目標是提供一個類似Python,Ruby和Java標準庫
前端commonjs、AMD、CMD、ES6等模組化的對比
CommmonJS用於node端,是同步載入的AMD依賴於requirejs,是非同步載入的,是提前載入,立即載入 CMD依賴於seajs,是非同步載入,延後載入,就近載入,用時載入 ES6是ES2015的簡稱,一般通過export來暴露模組,import來匯入模組Commo
CommonJS、AMD、CMD和ES6模塊化區別
var web family ava def node 如果 改變 所有 本文參考自:https://www.cnblogs.com/chenguangliang/p/5856701.html 1、CommonJS NodeJS是CommonJS規範的實現,webpac
對於模塊加載:ES6、CommonJS、AMD、CMD的區別
內存 imp 之前 readfile 分開 sil 但是 基礎 從服務器 運行和編譯的概念 編譯包括編譯和鏈接兩步。 編譯,把源代碼翻譯成機器能識別的代碼或者某個中間狀態的語言。 比如java只有JVM識別的字節碼,C#中只有CLR能識別的MSIL。還簡單的作一些比如