繁体   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