javascript
模块化编程AMDCommonJS
為什么要模塊化編程
如果JS也可以像類似python,Java使用import,引入我們想要的模塊,想要什么模塊,就加載什么模塊,可以給前端編程帶來更多的便捷,結構更加清晰明了。但是,這樣做有一個前提,那就是大家必須以同樣的方式編寫模塊。
目前,Javascript模塊規范共有兩種:CommonJS和AMD。
CommonJS
2009年,美國程序員Ryan Dahl創造了node.js項目,將javascript語言用于服務器端編程,標志"Javascript模塊化編程"正式誕生。在瀏覽器環境下,沒有模塊也不是特別大的問題,畢竟網頁程序的復雜性有限;但是在服務器端,一定要有模塊,與操作系統和其他應用程序互動,否則根本沒法編程。node.js的模塊系統,就是參照CommonJS規范實現的。在CommonJS中,有一個全局性方法require(),用于加載模塊。
var math = require('math');math.add(2,3); // 5但是,由于一個重大的局限,使得CommonJS規范不適用于瀏覽器環境。在第一行require('math')之后運行,因此必須等math.js加載完成。也就是說,如果加載時間很長,整個應用就會停在那里等。這對服務器端不是一個問題,因為所有的模塊都存放在本地硬盤,可以同步加載完成,等待時間就是硬盤的讀取時間。但是,對于瀏覽器,這卻是一個大問題,因為模塊都放在服務器端,等待時間取決于網速的快慢,可能要等很長時間,瀏覽器處于"假死"狀態。
因此,瀏覽器端的模塊,不能采用"同步加載"(synchronous),只能采用"異步加載"(asynchronous)。這就是AMD規范誕生的背景。
AMD
AMD是"Asynchronous Module Definition"的縮寫,意思就是"異步模塊定義"。它采用異步方式加載模塊,模塊的加載不影響它后面語句的運行。所有依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成之后,這個回調函數才會運行。
AMD也采用require()語句加載模塊,但是不同于CommonJS,它要求兩個參數:
require([module], callback);第一個參數[module],是一個數組,里面的成員就是要加載的模塊;第二個參數callback,則是加載成功之后的回調函數。如果將前面的代碼改寫成AMD形式,就是下面這樣:
require(['math'], function (math) {math.add(2, 3); });我們經常聽到的一個Javascript庫:require.js,它實現了AMD規范,我們可以方便的用來模塊化管理。
?
轉載于:https://www.cnblogs.com/zhouwenhong/p/3969587.html
總結
以上是生活随笔為你收集整理的模块化编程AMDCommonJS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker 感性介绍
- 下一篇: 高频焊台源码,改进版V2