使用此网址:
"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;
});
因此,当我点击浏览器中的网址时,我看到首先加载了app.html文件,然后加载require.js
,然后加载main.js
。之后,我收到404尝试从localhost/app/app.js
加载app.js - app2
上下文丢失。
我已经尝试重命名文件,以防需要混淆(不起作用),并且我已经尝试在列表中上下移动xx路径以查看它是否是位置错误(它不是)。我尝试使用从./
开始的xx路径,但这也不起作用。我已经使用浏览器导航到app.js,在预期的路径上,我的http服务器很乐意为它服务。
起初我认为这是一个路径问题,所以我在stackoverflow上阅读这里的解决方案,但这不是一个简单的路径问题,因为它是缺少的上下文 - 根URL - 而不是路径。 AHGA。
答案 0 :(得分:1)
好的,我有答案。我已将baseUrl设置为绝对URL,而不是相对URL。正确的字符串是:
baseUrl: './'