在Dojo中加载模块变量?

在Dojo中加载模块变量?,dojo,Dojo,我是dojo新手,不明白为什么会发生这种情况 在dojo.html中: require(["dojo/query", "dojo/NodeList-dom", "dojo/domReady!", "a" ], function(query, a) { query("#greeting").style("color", "red"); alert(a.sheep); }); 在a.js中 define([], function()

我是dojo新手,不明白为什么会发生这种情况

在dojo.html中:

require(["dojo/query", "dojo/NodeList-dom", "dojo/domReady!", "a" ], function(query, a) {
            query("#greeting").style("color", "red");
            alert(a.sheep);
        });
在a.js中

define([], function() {
var a = {
    "sheep": "blah",
}
return a;
});
需要并加载模块a是可以的,但当我试图提醒a.sheep时,我没有定义。
注意:我还尝试过将sheep声明为“blah”,并尝试将sheep更改为警报函数并运行a.sheep;有效。

无法访问
a.sheep
的原因是
a
变量中存在
dojo/NodeList dom
模块。
define/require
数组中元素的顺序绑定到后续
函数中的参数列表。所以你应该写:

require(["dojo/query", "a", "dojo/NodeList-dom", "dojo/domReady!"], function(query, a) {

})
另外,从实用的角度来看,我碰巧将代码的格式设置为:

define([
    "dojo/_base/declare",
    "dojo/query",

    "a",

    "dojo/NodeList-dom",
    "dojo/domReady!"
],
function(
    declare
    query,

    a
){

return declare(null, {

    constructor: function() {}

});
});
每个模块都在自己的行上,加上通过空行的模块逻辑集群