0

使用这个网址:

"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。

4

1 回答 1

1

好的,我有答案了。我已将 baseUrl 设置为绝对 URL,而不是相对 URL。正确的字符串是:

baseUrl: './'
于 2013-09-10T18:20:01.037 回答