什么'这是dojo 1.7 AMD框架的好处
what's the benefit of the dojo 1.7 AMD framework?
我一直在阅读关于dojo 1.7加载器如何在这里和这里使用AMD API/框架的文章,我在其中一张幻灯片上看到了这句话:"AMD的最大好处是不能按需加载脚本,正如一些人可能认为的那样,最大的好处是增加了代码组织/模块化,还减少了对全局/名称空间的需求。"但我的问题是,如果你需要访问另一个函数的执行上下文(和另一个功能的‘私有’变量),就不能通过使用普通的js函数来避免全局变量吗?换句话说,除了异步加载你需要的东西之外,AMD框架的好处是什么?
AMD的好处是拥有模块系统的好处,类似于其他语言中的命名空间系统。在JavaScript中,我们经常用全局变量来伪造它,但模块提供了许多特定的好处:
这些模块提供了其顶级范围的隐私,用于从其他模块导入单例对象,并导出自己的API。
---从CommonJS Modules/1.1.1规范开始。
这里的关键是进出口设施。以前每个人都是用全局变量(如window.jQuery
、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的作者James Burke写了一篇博客文章,详细介绍了为什么他认为AMD是最好的。RequireJS是一款与Dojo非常相似的AMD加载程序。
- Amd,希望确保某个东西总是最后执行
- 让Webpack管理Quirky AMD定义的最佳方式
- 在play2框架中向json对象添加下拉列表项
- 如何在离子框架+有角度的框架中制作顶部标签
- AMD格式是否要求模块为单件
- 如何在另一个html文件的框架中包含图像
- 如何重置内嵌框架
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- 用于图像和基于浏览器的图表的图表框架
- 没有装饰的小型浏览器框架
- 将javascript应用程序迁移到使用AMD的提示(例如requirejs)
- Chrome开发工具中使用了哪些框架和库
- 闭包js框架-将ArrayBuffer转换为字符串
- 类似于Prism的Knockout js框架
- 在其他javascript框架模板中运行angular指令
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- Dojo AMD加载程序执行定义具有空/缺失依赖项的回调
- 什么'这是dojo 1.7 AMD框架的好处
- 有任何javascript AMD框架使用延迟吗?
- 在TheIntern测试框架下加载Dojo AMD模块失败