关于requirejs动态加载模块的建议或在我的情况下使用优化/捆绑工具

时间:2013-03-14 05:31:12

标签: javascript requirejs amd r.js

我正在构建一个新的Web应用程序,它将包含完全不同的界面/用户体验,具体取决于用户刚刚进行身份验证/登录的类型。让我们称呼这些用户Admins&代表。

管理员和代表在此应用程序中具有完全不同的功能。两者都只使用我的模块的一小部分。它本质上是两个不同的客户端应用程序连接到我的后端。

我应该使用RequireJS优化器创建两个不同的构建文件,然后根据用户执行登录时服务器返回的内容将其中任何一个注入页面中吗?或者我应该更多地关注requirejs的动态模块加载,只需在需要时加载我需要的模块(因此遇到了很多额外的http请求:/)

1 个答案:

答案 0 :(得分:2)

我们有一个Backbone应用程序,它共享很多视图和模型,但并非所有客户端都有所有导航点,而且某些模型的行为也不同。

首先,我们为每个客户端提供一个require入口点和一个require.config。

<强>自举-client1.js

requirejs.config({
  baseUrl: 'js/cfe/app',
  paths: {
    'common/ViewA': 'clients/client1/ViewA',
    'common/ModelB': 'clients/client1/ModelB',
    'common/ColletionC': 'clients/client1/CollectionC'
  }
});

requirejs([
  'common/App',
  'common/BaseSetup'],

  function(app, BaseSetup) {
    $(function() {

      BaseSetup.start();

      app.start();
    });
  }
);

稍后当我们使用需要ModelB的共享视图时,这将替换为我们的client1/ModelB实现。

对于生产,我们使用r编译器为每个客户端构建单个编译版本,并在客户端请求html文件时更改html文件中data-main属性的来源。