1

我在 requirejs 和相对路径方面遇到了一些问题。

这是在我的 HTML 文件中:

<script data-main="/app/main.js" src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.1/require.js"></script>

我的配置设置如下:

requirejs.config({
    baseUrl: '/vendor',
    paths: {
        // APP FILES
        'app-base'   : '../app',
        'app-config' : '../config',
        models       : '../models', // where the models and collections are
        templates    : '../templates',
        views        : '../views',
        lib          : '../lib',
        tasks        : '../tasks',
        router       : '../app/router',

        // VENDOR FILES
        marionette : 'backbone.marionette',
    },
    deps: ['router'],
    shim: {...}
});

当我的应用程序从 url "localhost:3000/" 或 "localhost:3000/applications" 加载时,所有这些路径都会正确解析。但是当它从“localhost:3000/applications/app1”之类的东西加载时,路径解析不正确。

路径分别如下所示。

正确的:

“/models/test-model.js”

不正确:

“/applications/models/test-model.js”

我正在使用 CJS 加载我的模块,如下所示:

define( function( require ) {
   var TestModel = require('models/test-model.js');
});

当我将上面的内容更改为此 -->var TestModel = require('/models/test-model.js');时,它可以工作。但这违背了使用相对路径的目的。

如果有人可以帮助我,我会很高兴。我超级困惑。

4

1 回答 1

2

当需要一个模块时,一定要去掉 .js 扩展名,除非你指定了一个完整的路径。

于 2013-08-12T00:41:39.077 回答