假设您有以下目录结构和以下文件:
在RequireJS中,当你引用以“.”开头的模块时,RequireJS会在当前模块所在的同一文件夹中查找,即使那是一个子目录。然而,如果你在调用define()之前改变了baseUrl,RequireJS将把依赖项映射到新的baseUrl。
你可以通过在index.html中设置baseUrl,并将data-main更改为相对于baseUrl的路径来解决这个问题:
folder/index.html:
root
|-- require-jquery.js
+-- folder
|-- index.html
|-- main.js
+-- AnotherModule.js
在RequireJS中,当你引用以“.”开头的模块时,RequireJS会在当前模块所在的同一文件夹中查找,即使那是一个子目录。然而,如果你在调用define()之前改变了baseUrl,RequireJS将把依赖项映射到新的baseUrl。
你可以通过在index.html中设置baseUrl,并将data-main更改为相对于baseUrl的路径来解决这个问题:
folder/index.html:
<script>
var require = {
baseUrl : "../"
};
</script>
<script data-main="folder/main" src="../require-jquery.js"></script>
folder/main.js:
define(
[ "jquery", './AnotherModule' ],
function($, AnotherModule) {});
这仅适用于define():
folder/main.js:
require(
[ "jquery", './AnotherModule' ],
function($, AnotherModule) {});
如果我使用require()尝试它,RequireJS将在根目录中查找AnotherModule.js而不是文件夹中。为什么会这样,特别是define()和require()之间的设计差异是什么?