簡體   English   中英

什么是dojo 1.7 AMD框架的好處?

[英]what's the benefit of the dojo 1.7 AMD framework?

我一直在閱讀dojo 1.7加載器如何在這里這里使用AMD API /框架,我在其中一張幻燈片上看到了這句話:“AMD(最大)的好處是無法加載腳本正如一些人可能認為的那樣,需求最大的好處是代碼組織/模塊化的增加以及對全局/命名空間的需求減少。“ 但我的問題是,使用普通的js函數不能避免全局變量,如果你需要訪問另一個函數的執行上下文(和另一個函數的'私有'變量),可能還有dojo.hitch()嗎? 換句話說,除了異步加載你需要的東西之外,AMD框架的好處是什么?

AMD的好處是具有模塊系統的好處,類似於其他語言的命名空間系統。 在JavaScript中,我們經常使用全局變量偽裝它,但模塊提供了許多特定的好處:

這些模塊提供其頂級范圍的隱私,用於從其他模塊導入單個對象以及導出自己的API的工具。

---從CommonJS Modules / 1.1.1規范開始,全部啟動。

這里的關鍵是進出口設施。 以前每個人都在使用全局變量(如window.jQuerywindow._等)進行臨時window._ 要獲得jQuery的導出功能,你必須知道這個神奇的名字,希望沒有人與它發生沖突,並確保在你的腳本之前加載了jQuery腳本。 沒有辦法聲明性地指定你對jQuery的依賴,並且jQuery除了將它們填充到全局window.jQuery對象之外沒有辦法說“這是我導出的”。

模塊格式修復了這個問題:每個模塊都導出特定的功能,例如

// math.js
define(function (require, exports, module) {
    exports.add = function (a, b) { return a + b; };
});

並且每個模塊可以要求特定的其他模塊,例如

// perimeter.js
define(function (require, exports, module) {
    var math = require("math");

    exports.square = function (side) {
        return math.add(math.add(side, side), math.add(side, side));
    };
});

為什么AMD要選擇的模塊系統,詹姆斯·伯克,筆者RequireJS --- AMD的裝載機很像道場有---寫了一篇博客文章,詳細說明為什么他認為AMD是最好的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM