使用这个网址:
"localhost/app2/app.html"
我希望 require.js 能够操纵路径,以便它加载的所有脚本都以上下文“app2/”为前缀。但是,我的应用程序脚本得到了 404,当我查看 firebug 时,浏览器试图在没有 app2 上下文的情况下检索它。
我的文件结构是:
content
|-app.html
|-main.js
|-app
|-app.js
|-main.js
|-libs
|-require.js
在 app.html 我有一个脚本标签:
<script src="libs/require.js" data-main="app/main" type="text/javascript"></script>
main.js 文件有这个:
require.config({
baseUrl: "/",
paths: {
xx: "app/app",
header: "app/views/header",
footer: "app/views/footer",
templates: "app/views/templates",
jquery: "libs/jquery-2.0.3",
k: "libs/kendo/kendo.core",
backbone: "libs/backbone",
marionette: "libs/backbone.marionette",
wreqr: "libs/backbone.wreqr",
babysitter: "libs/backbone.babysitter",
underscore: "libs/underscore",
text: "libs/text"
},
shim: {
jquery: {
exports: '$'
},
underscore: {
exports: '_'
},
backbone: {
deps: ['jquery', 'underscore'],
exports: 'Backbone'
},
marionette: {
deps: ['jquery', 'underscore', 'backbone'],
exports: 'Marionette'
}
}
});
require(["xx"], function (app) {
app.start();
});
我的 app.js 看起来像这样:
define(['jquery', 'underscore', 'backbone', 'marionette'],
function ($, _, Backbone, Marionette) {
var app = new Backbone.Marionette.Application();
app.addRegions({
headerRegion: "#header-region",
moduleRegion: "#module-region",
footerRegion: "#footer-region",
dialogsRegion: "#dialogs-region"
});
app.on("initialize:after", function() {
console.log("Starting App");
Backbone.history.start();
});
return app;
});
因此,当我在浏览器中点击 url 时,我看到 app.html 文件首先加载,然后require.js
加载,然后是main.js
. 之后,我得到一个 404 试图从中加载 app.js localhost/app/app.js
-app2
上下文丢失。
我尝试重命名文件,以防 require 变得混乱(不起作用),并且我尝试在列表中上下移动 xx 路径以查看它是否是位置错误(不是)。我尝试使用以 xx 开头的路径./
,但这也不起作用。我已经使用浏览器在预期的路径上导航到 app.js,并且我的 http 服务器很乐意为它提供服务。
起初我认为这是一个路径问题,所以我在 stackoverflow 上阅读了这里的解决方案,但这不是一个简单的路径问题,因为缺少的是上下文——根 url——而不是路径。AHGA。