Dojo请求AMD模块并回拨

时间:2013-03-15 15:06:38

标签: require dojo amd

我只是想知道,这只是一个普遍的问题,正在搔痒我的大脑。上面的Dojo 1.7使用了AMD模块,这是调用小部件和帮助类的好方法。

通过回调调用类或AMD模块的正常方法的问题如下所示:

require(['dojo/_base/lang', 'dojox/grid/DataGrid', 'dojo/data/ItemFileWriteStore', 'dojo/dom', 'dojo/domReady!'],
    function(lang, DataGrid, ItemFileWriteStore, dom){

这样我调用lang,DataGrid和ItemFileWriteStore模块,在函数中调用回来使用这些模块,有些模块没有回调函数,如dojo / domReady!。

那么是否存在差异或是否会导致调用模块的错误?或者重要的是让它们在需求和功能上处于相同的顺序。但是首先打电话到哪个并不重要?

2 个答案:

答案 0 :(得分:2)

我不确定你在问什么。但是函数中的参数应该与导入的模块名称的顺序/顺序相同(如给定示例中所示)。

如果模块没有返回一个对象(比如domReady),建议你把它作为最后一个模块,因为大多数模块仍然会返回一些东西(比如HTML文档或函数等)。

您当然可以在任意位置添加它们,但如果您要切换dojo/domdojo/domReady!,则意味着变量dom将不再包含{{{ 1}}但是对于另一个模块(没有对象)。 这意味着您必须执行以下操作:

dojo/dom

require(['dojo/_base/lang', 'dojox/grid/DataGrid', 'dojo/data/ItemFileWriteStore', 'dojo/domReady!', 'dojo/dom'], function(lang, DataGrid, ItemFileWriteStore, placeholder, dom){ 没有实际用途。

答案 1 :(得分:0)

我认为你可能会误解某些东西,或者我误解了你在说什么。

define()函数有两个参数:

  • 依赖项的模块名称数组
  • 需要这些依赖项的回调函数

模块或模块名称本身不是回调,回调是您编写的函数,并在加载所有模块时触发。

正如Demitri M所说,在回调函数结束时放置没有返回值的模块(因为它们会做其他事情)是有意义的,因为这样可以缩短参数列表。