0

我只是想知道,这只是一个让我的大脑发痒的一般性问题。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!。

那么有区别还是会导致调用模块的顺序出错?或者重要的部分是让它们在 require 和 function 中的顺序相同。但是先调用哪个并不重要?

4

2 回答 2

2

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

如果模块没有返回对象(如 domReady),建议您将其作为最后一个模块,因为它们中的大多数仍然返回一些东西(如 HTML 文档或函数或其他东西)。

您当然可以将它们添加到您想要的任何位置,但如果您切换dojo/domand dojo/domReady!,则意味着该变量dom将不再包含其他模块的代码,dojo/dom而是包含其他模块(无对象)的代码。这意味着您必须执行以下操作:

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

哪里placeholder没有实际用处。

于 2013-03-16T01:03:10.527 回答
0

我想你可能误解了一些东西,或者我误解了你在说什么。

define()函数有两个参数:

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

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

正如 Demitri M 所说,将不返回值的模块(因为它们执行其他操作)放在回调函数的末尾是有意义的,因为这样可以缩短参数列表。

于 2013-04-17T10:19:45.843 回答