Dojo 看不到自定义小部件



我在foo/bar.js中有一个自定义小部件,声明如下:

define([
  ...
], function(
  ...
) {
  return {
    ...
  }
);

我正试图在其他类似的小部件中使用它:

require([
  "foo/bar"
  ...
], function(bar, ..
..

但它不会加载。有人有什么建议吗?

当我在控制台中键入foo/bar时,它会返回空对象Object {}。当我使用旧格式和dojo.provide()时,一切都很好。但一旦它掉下来,假发就看不见了。

重要信息:只有当我尝试使用Google托管的Dojo:时,才会出现问题

<!--
<script src="{{ STATIC_URL }}js/dojo/dojo.js" type="text/javascript"></script>
!-->
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.8.6/dojo/dojo.js"></script>

我必须使用Google托管的Dojo进行调试,因为STATIC_URL需要30-40秒才能加载(因为它是未编译的)。

首先在dojo现在使用的AMD模块的负载上阅读以下内容:http://requirejs.org/docs/whyamd.html#definition

AMD的工作方式是,它将返回所需的模块作为函数参数。您可以在require调用的函数中使用该模块。

假设您已经定义了foo/bar模块。你可以在这样的需求中使用它:

require(["foo/bar"], function (anyVarName) {  // <- anyVarName will be your foo/bar return value
  console.dir(anyVarName);
}

anyVarName将只存在于函数内部。使用它的代码应该在里面。

你可以需要多个模块,它们将以与你需要它们相同的顺序作为参数传递

require(["foo/bar1","foo/bar2","foo/bar3"], function (bar1, bar2, bar3) {});

这样更好吗?

最新更新