Dav*_*van 159 javascript requirejs requirejs-define
我已经搜索了关于此的文档的高低,但我在任何地方都找不到任何东西.
我正在使用Aloha并希望使用他们的侧边栏原型来创建我自己的新侧边栏,附加到其他插件功能.
他们的sidebar.js从这开始,但我不能为我的生活找到任何解释它意味着什么的文档.
define( [
'aloha/core',
'aloha/jquery',
'aloha/selection'
], function (Aloha, jQuery, Selection, Plugin) {
Run Code Online (Sandbox Code Playgroud)
然后它继续在那个包装器中定义一堆函数,所以vars
还有一些proptotypes
- 我可以解决这个问题......
那是什么说法或在哪里可以找到解释?
Jam*_*ice 171
我不能在没有看到整个脚本的情况下肯定地说,但它可能是define
RequireJS的函数,特别是该函数的" define with dependencies "形式.它用于定义"模块":
模块与传统脚本文件的不同之处在于它定义了一个良好范围的对象,可以避免污染全局命名空间.它可以显式列出其依赖项并获取这些依赖项的句柄,而无需引用全局对象,而是将依赖项作为参数接收到定义模块的函数.
"依赖于定义"的形式define
描述如下:
如果模块具有依赖关系,则第一个参数应该是依赖项名称数组,第二个参数应该是定义函数.所有依赖项加载后,将调用该函数来定义模块.该函数应返回定义模块的对象.
这是用于编写模块的 AMD 模式,AMD 代表异步模块定义,用于基本上异步导入模块而不是像 commonJS 这样的模块。
define(['module1', 'module2'], function(module1, module2) {
console.log(module1.sayHi());
});
Run Code Online (Sandbox Code Playgroud)
定义需要一个依赖项数组,一旦所有这些都以非阻塞方式在后台(异步)加载,定义调用回调,回调又接受参数(在这种情况下是依赖项)。
另一件需要注意的是,这些模块中的每一个都需要使用“define”关键字来定义。因此,例如 module1 将被定义如下:
define([], function() {
return {
sayHi: function() {
console.log('Hi Hi');
},
};
});
Run Code Online (Sandbox Code Playgroud)
这种编写模块的方式 (AMD) 允许您在编写时考虑浏览器兼容性(不像 nodeJS 中的 require() ),并且您还可以定义多种格式,包括对象、JSON 等,而例如 commonJS 需要模块是对象。
请记住,AMD 有自己的缺点。希望这可以帮助某人。
归档时间: |
|
查看次数: |
83072 次 |
最近记录: |