成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

CommonJS 和 AMD

haitiancoder / 1916人閱讀

摘要:簡單來講,它是一個(gè)規(guī)范。規(guī)范規(guī)定,每個(gè)模塊內(nèi)部,變量代表當(dāng)前模塊。這個(gè)變量是一個(gè)對象,它的屬性即是對外的接口。加載模塊是同步的,所以只有加載完成才能執(zhí)行后面的操作。

對于前端開發(fā)者來說 CommonJS 和 AMD 是經(jīng)常遇到的概念,那么 CommonJS 和 AMD 到底是什么呢?

CommonJS
CommonJS is a project with the goal of specifying an ecosystem for JavaScript outside the browser (for example, on the server or for native desktop applications).

維基百科說,CommonJS 是一個(gè)致力于規(guī)范化瀏覽器之外的 JavaScript 生態(tài)系統(tǒng)的項(xiàng)目(例如,在服務(wù)器端或者是原生的桌面應(yīng)用程序)。

簡單來講,它是一個(gè)規(guī)范。根據(jù)這個(gè)規(guī)范,每個(gè)文件就是一個(gè)模塊,有自己的作用域。在一個(gè)文件里面定義的變量、函數(shù)、類,都是私有的,對其他文件不可見。CommonJS 規(guī)范規(guī)定,每個(gè)模塊內(nèi)部,module變量代表當(dāng)前模塊。這個(gè)變量是一個(gè)對象,它的exports屬性(即module.exports)是對外的接口。加載某個(gè)模塊,其實(shí)是加載該模塊的module.exports屬性。

CommonJS 加載模塊是同步的,所以只有加載完成才能執(zhí)行后面的操作。像Node.js主要用于服務(wù)器的編程,加載的模塊文件一般都已經(jīng)存在本地硬盤,所以加載起來比較快,不用考慮異步加載的方式,所以CommonJS規(guī)范比較適用。但如果是瀏覽器環(huán)境,要從服務(wù)器加載模塊,這是就必須采用異步模式。所以就有了 AMD,CMD 解決方案。

AMD(Asynchromous Module Definition)

CommonJS是主要為了js在后端的表現(xiàn)制定的,是不適合前端的,為什么這么說呢?這需要分析一下瀏覽器端的js和服務(wù)器端js都主要做了哪些事,有什么不同了:

于是乎,AMD(異步模塊定義)出現(xiàn)了,它就主要為前端JS的表現(xiàn)制定規(guī)范。
AMD就只有一個(gè)接口:

define(id?,dependencies?,factory)

它要在聲明模塊的時(shí)候制定所有的依賴(dependencies),并且還要當(dāng)做形參傳到factory中,像這樣:

define(["./a", "./b"], function(a, b) { // 依賴必須一開始就寫好
    a.doSomething()
    // 此處略去 100 行
    b.doSomething()
    ...
})
參考鏈接

1. JavaScript 標(biāo)準(zhǔn)參考教程(alpha)
2. amdjs/amdjs-api

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/92840.html

相關(guān)文章

  • 關(guān)于JavaScript模塊規(guī)范之CommonJSAMDCMD

    摘要:所有依賴這個(gè)模塊的語句,都定義在一個(gè)回調(diào)函數(shù)中,等到加載完成之后,這個(gè)回調(diào)函數(shù)才會(huì)運(yùn)行。也采用語句加載模塊,但是不同于,它要求兩個(gè)參數(shù)第一個(gè)參數(shù),是一個(gè)數(shù)組,里面的成員就是要加載的模塊第二個(gè)參數(shù),則是加載成功之后的回調(diào)函數(shù)。 本篇文章來自對文章《js模塊化編程之徹底弄懂CommonJS和AMD/CMD!》的總結(jié),大部分摘自文章原話,本人只是為了學(xué)習(xí)方便做的筆記,之后有新的體會(huì)會(huì)及時(shí)補(bǔ)充...

    binaryTree 評論0 收藏0
  • js中的模塊化——commonjs,AMD,CMD,UMD,ES6

    摘要:若不存在則模塊標(biāo)識(shí)應(yīng)該默認(rèn)定義為在加載器中被請求腳本的標(biāo)識(shí)。這也是目前很多插件頭部的寫法,就是用來兼容各種不同模塊化的寫法。語句輸出的值是動(dòng)態(tài)綁定的,綁定其所在的模塊。 前言 歷史上,js沒有模塊化的概念,不能把一個(gè)大工程分解成很多小模塊。這對于多人開發(fā)大型,復(fù)雜的項(xiàng)目形成了巨大的障礙,明顯降低了開發(fā)效率,java,Python有import,甚至連css都有@import,但是令人費(fèi)...

    qpal 評論0 收藏0
  • 關(guān)于CommonJS、AMD、CMD、UMD說明

    摘要:函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)是當(dāng)前運(yùn)行時(shí)環(huán)境,第二個(gè)參數(shù)是模塊的定義體。在執(zhí)行規(guī)范時(shí),會(huì)優(yōu)先判斷是當(dāng)前環(huán)境是否支持環(huán)境,然后再檢驗(yàn)是否支持環(huán)境,否則認(rèn)為當(dāng)前環(huán)境為瀏覽器環(huán)境 CommonJS規(guī)范 CommonJS定義的模塊分為3部分: require 模塊引用 exports 模塊導(dǎo)出 module 模塊本身 根據(jù)CommonJS規(guī)范,一個(gè)單獨(dú)的文件就是一個(gè)模塊。每一個(gè)模塊都是一個(gè)...

    harryhappy 評論0 收藏0
  • 一覽js模塊化:從CommonJS到ES6

    摘要:模塊化規(guī)范有的模塊系統(tǒng)。規(guī)范是服務(wù)器端模塊的規(guī)范,由推廣使用。對于依賴的模塊,是提前執(zhí)行,是延遲執(zhí)行。瀏覽器廠商和都宣布要原生支持該規(guī)范。它將逐漸取代和規(guī)范,成為瀏覽器和服務(wù)器通用的模塊解決方案。 本文由云+社區(qū)發(fā)表 模塊化是指把一個(gè)復(fù)雜的系統(tǒng)分解到一個(gè)一個(gè)的模塊。 模塊化開發(fā)的優(yōu)點(diǎn): (1)代碼復(fù)用,讓我們更方便地進(jìn)行代碼管理、同時(shí)也便于后面代碼的修改和維護(hù)。 (2)一個(gè)單獨(dú)的文件就...

    antz 評論0 收藏0
  • 前端模塊化規(guī)范筆記

    摘要:目前通行的的模板規(guī)范共有兩種和的模塊系統(tǒng),是參照規(guī)范實(shí)現(xiàn)的即為服務(wù)器端模塊的規(guī)范。規(guī)范則是非同步加載模塊,允許指定回調(diào)函數(shù)。 目前通行的Javascript的模板規(guī)范共有兩種:CommonJS 和 AMD commonjs nodejs的模塊系統(tǒng),是參照commonjs規(guī)范實(shí)現(xiàn)的 commonjs即為服務(wù)器端模塊的規(guī)范。 commonjs的規(guī)范: 根據(jù)commonjs規(guī)范,一個(gè)單獨(dú)的...

    honmaple 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<