摘要:簡單來講,它是一個規范。規范規定,每個模塊內部,變量代表當前模塊。這個變量是一個對象,它的屬性即是對外的接口。加載模塊是同步的,所以只有加載完成才能執行后面的操作。
對于前端開發者來說 CommonJS 和 AMD 是經常遇到的概念,那么 CommonJS 和 AMD 到底是什么呢?
CommonJSCommonJS 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 是一個致力于規范化瀏覽器之外的 JavaScript 生態系統的項目(例如,在服務器端或者是原生的桌面應用程序)。
簡單來講,它是一個規范。根據這個規范,每個文件就是一個模塊,有自己的作用域。在一個文件里面定義的變量、函數、類,都是私有的,對其他文件不可見。CommonJS 規范規定,每個模塊內部,module變量代表當前模塊。這個變量是一個對象,它的exports屬性(即module.exports)是對外的接口。加載某個模塊,其實是加載該模塊的module.exports屬性。
CommonJS 加載模塊是同步的,所以只有加載完成才能執行后面的操作。像Node.js主要用于服務器的編程,加載的模塊文件一般都已經存在本地硬盤,所以加載起來比較快,不用考慮異步加載的方式,所以CommonJS規范比較適用。但如果是瀏覽器環境,要從服務器加載模塊,這是就必須采用異步模式。所以就有了 AMD,CMD 解決方案。
AMD(Asynchromous Module Definition)CommonJS是主要為了js在后端的表現制定的,是不適合前端的,為什么這么說呢?這需要分析一下瀏覽器端的js和服務器端js都主要做了哪些事,有什么不同了:
于是乎,AMD(異步模塊定義)出現了,它就主要為前端JS的表現制定規范。
AMD就只有一個接口:
define(id?,dependencies?,factory)
它要在聲明模塊的時候制定所有的依賴(dependencies),并且還要當做形參傳到factory中,像這樣:
define(["./a", "./b"], function(a, b) { // 依賴必須一開始就寫好 a.doSomething() // 此處略去 100 行 b.doSomething() ... })參考鏈接
1. JavaScript 標準參考教程(alpha)
2. amdjs/amdjs-api
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92840.html
摘要:所有依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成之后,這個回調函數才會運行。也采用語句加載模塊,但是不同于,它要求兩個參數第一個參數,是一個數組,里面的成員就是要加載的模塊第二個參數,則是加載成功之后的回調函數。 本篇文章來自對文章《js模塊化編程之徹底弄懂CommonJS和AMD/CMD!》的總結,大部分摘自文章原話,本人只是為了學習方便做的筆記,之后有新的體會會及時補充...
摘要:若不存在則模塊標識應該默認定義為在加載器中被請求腳本的標識。這也是目前很多插件頭部的寫法,就是用來兼容各種不同模塊化的寫法。語句輸出的值是動態綁定的,綁定其所在的模塊。 前言 歷史上,js沒有模塊化的概念,不能把一個大工程分解成很多小模塊。這對于多人開發大型,復雜的項目形成了巨大的障礙,明顯降低了開發效率,java,Python有import,甚至連css都有@import,但是令人費...
摘要:函數有兩個參數,第一個參數是當前運行時環境,第二個參數是模塊的定義體。在執行規范時,會優先判斷是當前環境是否支持環境,然后再檢驗是否支持環境,否則認為當前環境為瀏覽器環境 CommonJS規范 CommonJS定義的模塊分為3部分: require 模塊引用 exports 模塊導出 module 模塊本身 根據CommonJS規范,一個單獨的文件就是一個模塊。每一個模塊都是一個...
摘要:模塊化規范有的模塊系統。規范是服務器端模塊的規范,由推廣使用。對于依賴的模塊,是提前執行,是延遲執行。瀏覽器廠商和都宣布要原生支持該規范。它將逐漸取代和規范,成為瀏覽器和服務器通用的模塊解決方案。 本文由云+社區發表 模塊化是指把一個復雜的系統分解到一個一個的模塊。 模塊化開發的優點: (1)代碼復用,讓我們更方便地進行代碼管理、同時也便于后面代碼的修改和維護。 (2)一個單獨的文件就...
閱讀 1308·2019-08-30 15:44
閱讀 1979·2019-08-30 13:49
閱讀 1651·2019-08-26 13:54
閱讀 3485·2019-08-26 10:20
閱讀 3241·2019-08-23 17:18
閱讀 3294·2019-08-23 17:05
閱讀 2130·2019-08-23 15:38
閱讀 1012·2019-08-23 14:35