RequireJS设置父级别的路径

时间:2012-08-05 12:48:09

标签: javascript mobile requirejs

为了将我的模型,收藏品等从我的移动应用程序导向我的网络应用程序,我需要配置我的RequireJS。

我有以下文件结构:

/
/js
  /models
/mobile
  /js
  /templates

我希望我的mobile应用使用我的主应用模型,所以我设置了以下内容:

require.config( {
    paths : {
        models : '/js/models',
        templates : 'mobile/templates'
    }
});

我在Chrome中遇到了这些错误:

Uncaught SyntaxError: Unexpected token < /mobile/js/models/User.js?bust=0.1.0:1
Uncaught SyntaxError: Unexpected token < /mobile/js/models/InviteRequest.js?bust=0.1.0:1
Uncaught SyntaxError: Unexpected token < /mobile/js/models/Log.js?bust=0.1.0:1

意味着它仍然在/mobile而不是/

此路径配置适用于我的templates文件夹,但不适用于我的models文件夹。如何将所有以models/开头的依赖项指向我的主模型文件夹?

谢谢!

ATTEMPT 2

我尝试设置baseUrl代替:

require.config( {
    baseUrl : '/',
    paths : {
        views : 'mobile/views',
        templates : 'mobile/templates'
    }
});

require( [
    'app'
],
function(App) {
    App.initialize();
});

我收到错误:

GET http://local.m.mysite.co/app.js 404 (Not Found) require.js:2

1 个答案:

答案 0 :(得分:1)

在你的第二次尝试中,你基本上告诉Require JS加载'app'模块,因为你将基本url设置为'/',Require JS将在你的根路径中看起来'app'模块。

所以你需要做的是告诉Require JS在哪里寻找你的'app'模块。假设你的'app'模块在/ js / module中:

/
/js
  /models
  /module
    /app.js
/mobile
  /js
  /templates

然后你加载'app'模块的代码是:

require.config( {
    baseUrl : '/',
    paths : {
        views : 'mobile/views',
        templates : 'mobile/templates'
    }
});

require( [
  'js/module/app'
],
function(app) {
    app.initialize();
});

或者,您可以在配置中设置“模块”路径。然后在依赖项加载中引用此路径:

require.config( {
    baseUrl : '/',
    paths : {
        views : 'mobile/views',
        templates : 'mobile/templates',
        module: 'js/module'
    }
});

require( [
  'module/app'
],
function(app) {
    app.initialize();
});

至于您在ATTEMPT 2之前在Chrome中遇到的错误,您需要了解如何在模块加载中引用模块。