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

标签 javascript requirejs amd r.js

我正在构建一个新的 Web 应用程序,该应用程序将包含完全不同的界面/用户体验,具体取决于刚刚经过身份验证/登录的用户类型。让我们将这些用户称为管理员和代表。

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

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

最佳答案

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

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

Bootstrap-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 的共享 View 时,这将替换为我们的 client1/ModelB 实现。

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

关于javascript - 关于 requirejs 动态加载模块的建议或在我的情况下使用优化/捆绑工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15401897/

相关文章:

requirejs - 是否可以将 CommonJS 模块与 karma/mocha 一起使用

visual-studio - TypeScript AMD 无法使用自定义 require.config baseUrl 解析外部模块

javascript - react redux async action 完成函数后调用下一个函数

javascript - 仅使用 "for"属性作为选择器,用 JS 修改表单标签文本

javascript - requireJS - 使用 ajax 请求

node.js - 在 Node js 中使用 mocha 测试主干 js

javascript - 在对象列表中查找重复项并将其分开 - 在 JavaScript 中

reactjs - Global React 与 AMD React 配合不佳

Javascript - 使用匹配来查找两个单词并返回它们之间的所有文本(尽管有换行符)

javascript - 如何在 Plotly 中添加轨迹,并为 x 轴上的每个数据点设置自定义顺序?