Module 代码在错误的位置查找模块

Module 代码在错误的位置查找模块,module,dojo,amd,Module,Dojo,Amd,我使用build.dojotoolkit.org(我的第一次尝试)创建了一个多层构建,共有3层:dojo.js、dojox.js、dijit.js。每个js文件都上传到自己的文件夹中(dojo、dojox、dijit) 当我运行代码时,我希望它在dijit.js中查找,以获得像dijit.form.TextBox这样的表单模块。但是相反,它尝试加载dijit/form/TextBox.js,结果当然是404错误 我做错了什么 如果有帮助,文件位于此处: 手动将每个层包含在页面上的脚本标记中 &l

我使用build.dojotoolkit.org(我的第一次尝试)创建了一个多层构建,共有3层:dojo.js、dojox.js、dijit.js。每个js文件都上传到自己的文件夹中(dojo、dojox、dijit)

当我运行代码时,我希望它在dijit.js中查找,以获得像dijit.form.TextBox这样的表单模块。但是相反,它尝试加载dijit/form/TextBox.js,结果当然是404错误

我做错了什么

如果有帮助,文件位于此处:

手动将每个层包含在页面上的脚本标记中

<script src="path/to/dojo.js" />
<script src="path/to/dojox.js" />
<script src="path/to/dijit.js" />
AMD将首先确定是否已经定义了dijit/form/TextBox。如果是这样的话,它将只获取对象并执行回调

如果模块尚未定义,AMD将查看其缓存中的定义代码是否可用。包含脚本文件时,将提供定义函数的缓存。AMD找到定义模块的代码。它调用这个define函数,结果是传递到回调中的对象。dijit/form/TextBox的后续requires也将使用上述对象

如果模块尚未定义且AMD在其缓存中未找到define函数,则AMD将向服务器发出XHR请求,以尝试定位特定的模块代码。XHR调用的结果应该提供define函数。AMD将调用该函数并使用结果作为对象传递到回调中。同样,dijit/form/TextBox的后续requires也将使用此对象

Dojo构建可以1)缩小代码,2)将其合并为需要从服务器请求的更少文件


AMD允许您编写可以在任何环境中运行的代码(使用内置文件或单个文件),而无需进行修改。

我肯定遗漏了什么。如果我需要提前加载脚本,AMD有什么意义?我的页面有两种模式(表单或图表),我的假设是当我需要dijit模块时dojo会加载dijit.js。如果我理解正确,这意味着为了进一步优化,我需要在require之前添加一个层,它将只加载我特定模式所需的js包。另外,将单个文件放在服务器上作为安全网的建议也是一种很好的做法。好吧,我试过了,但我仍然面临同样的问题。3个js文件可以正常加载,但代码仍在尝试从dijit/form加载模块。
require(["dijit/form/TextBox"], function(TextBox){
  ...
});