我有一个基于此示例的多页主干应用程序:https ://github.com/asciidisco/grunt-requirejs/tree/master/examples/multipage-shim ,它适用于基本网址。当我导航到不再位于域根目录的页面时,问题就出现了。
目录结构如下所示:
scripts
├── app
│ ├── controller
│ │ ├── Base.js
│ │ ├── c1.js
│ │ └── c2.js
│ ├── lib.js
│ ├── main1.js
│ ├── main2.js
│ ├── model
│ │ ├── Base.js
│ │ ├── m1.js
│ │ └── m2.js
├── common.js
├── page1.js
└── page2.js
因此,例如,如果我导航到http://localhost/
,则使用以下脚本标记正确加载所有内容:
<script data-main="/scripts/page1" src="/path/to/require.js">
(这会加载 page1,然后加载 common.js 和 main1.js)。
但是,如果我导航到http://localhost/another/url/
,则相同的脚本标记会成功加载 page1.js 和 common.js,但是当它尝试加载 main1.js 时,我会收到 404,因为它是从相对 URL 加载的(尝试加载http://localhost/another/url/scripts/app/main1.js
.
我baseUrl
的设置为'scripts'
,并且我正在使用 grunt ( https://github.com/asciidisco/grunt-requirejs ) 进行构建。
page1.js 的内容是这样的:
//Load common code that includes config, then load the app logic for this page.
require(['./common'], function (common) {
require(['app/main1']);
});