我只是想知道,这只是一个普遍的问题,正在搔痒我的大脑。上面的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!。
那么是否存在差异或是否会导致调用模块的错误?或者重要的是让它们在需求和功能上处于相同的顺序。但是首先打电话到哪个并不重要?
答案 0 :(得分:2)
我不确定你在问什么。但是函数中的参数应该与导入的模块名称的顺序/顺序相同(如给定示例中所示)。
如果模块没有返回一个对象(比如domReady),建议你把它作为最后一个模块,因为大多数模块仍然会返回一些东西(比如HTML文档或函数等)。
您当然可以在任意位置添加它们,但如果您要切换dojo/dom
和dojo/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所说,在回调函数结束时放置没有返回值的模块(因为它们会做其他事情)是有意义的,因为这样可以缩短参数列表。