0

我试图结合 dijit 布局来理解 dojo。更具体地说:我需要在 JS 中使用布局小部件还是使用 html 数据属性就足够了?

我已经阅读了Layout 文档,看来您需要 3 件事:

  • JavaScript:需要您要使用的布局小部件
  • HTML 标记
  • CSS

但我不清楚为什么我需要JavaScript中的布局小部件:

require(["dojo/parser", "dijit/layout/BorderContainer", "dijit/layout/ContentPane"]);

本例中说明了这一点。

我创建了一个演示 ,不需要“dijit/layout/BorderContainer”和“dijit/layout/ContentPane”,而且效果很好。

将这些排除在require语句之外是否安全?

4

2 回答 2

2

您应该要求您的模块,而不是让解析器加载它们,因为理想情况下,您希望在解析器运行之前加载所有模块,以便您可以将所有依赖模块捆绑到一个层文件中。

这意味着您可以使用所有常用模块创建一个层,这样您就不需要有 100 个微小的 .js 请求访问您的服务器,而是可以加载一个更大的请求。

此外,如果您有自定义模块,您应该在自定义模块中加载所有依赖的小部件,而不是让解析器检测。

于 2013-11-01T23:25:37.390 回答
1

dojo/parser为您加载所有依赖项,因此您不需要在 JavaScript 中以编程方式要求它们,但是一旦您决定构建代码,您就需要它们,即将所有依赖项放入一个文件中,这就是解析器警告的原因你,当它为你加载依赖项时:

在此处输入图像描述

这种自动要求也是原因,为什么parser.parse()返回 a promise,因为它可能是异步加载依赖项:

parser.parse().then(function(/* Array */ widgetInstances) {

});
于 2013-11-01T16:22:37.353 回答