在我们的应用程序中,我们将dojo用于某些小部件(包括多个自定义小部件),并将AMD格式用于多个模块。
例如
define("foo.bar.module", ["dojo/_base/declare"], function(declare) {
var module = declare("foo.bar.module", [], {
// Do Stuff
}
return module;
});
由于每个模块都是单独请求的,因此当前工作正常。但是,我们已经确定使用dojo层将其折叠为一个请求将是一个很好的优化。
问题是,我们先加载该层,然后尝试要求该层中定义的模块,但是dojo加载器找不到该模块。要使此工作有效,构建配置文件中是否特别需要某些内容?一些帮助,或指向文档的链接将不胜感激。
模块ID是路径,而不是对象标识符。第一个论点define
是错误的。应该是foo/bar/module
它是否将存在。但是,您永远不应向提供第一个字符串参数define
,因为这会破坏可移植性。declare
除非有意尝试在全局范围内创建构造函数,否则也不应提供第一个字符串参数。
总之,您的模块定义应为:
define(["dojo/_base/declare"], function(declare) {
var module = declare([], {
// Do Stuff
}
return module;
});
最后,关于构建的层,有两点需要注意:
app/main
用于加载整个应用程序的模块,那将是一个很好的图层模块。app/layerA
仅为新层创建新模块将是错误的。require([ "a", "b", "c" ])
这三个模块将作为单独的请求加载,因为加载器不知道“ a”包含“ b”和“ c” 。在这种情况下,您必须始终先加载“ a”,然后再加载“ b”和“ c”,这时它们将仅从图层中加载而不是单独加载。boot: true
构建配置文件(dojo/dojo
)中的一层外,其他层的加载方式必须与其他任何模块相同-即,使用require
或define
,而不要<script>
为层模块包括标签。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句