6

我们有一个包含大约 200 个模块的大型单页应用程序 -

当我们使用优化器时 - 我们最终将一个文件中的所有模块都进行了 uglified 等。工作得很好。

但我们的应用程序是一种多租户应用程序,每个用户并不需要全部 200 个模块。

我们可以将模块大致分为50个通用模块,如果用户类型为'A'则需要100个模块,用户类型'B'需要50个模块等。

现在,如果用户类型是“B”,则下载的单个优化文件包含 100 个从未使用过的模块。不知何故,如果我们可以避免这些,文件大小会小得多,这将真正提高性能。

简而言之,我正在寻找这个 - 我们有模块组 - 将模块组优化到它自己的文件中 - 根据用户的需求下载相应的文件。

是否可以使用 requireJS 进行这种优化?

谢谢,J。

4

2 回答 2

0

您可以构建一个基本模块,其中包含启动应用程序所需的所有内容以及大多数用户将看到的内容。从文档

优化器只会组合在传递给顶层 require 和 define 调用的字符串文字数组中指定的模块,或者在简化的 CommonJS 包装中组合 require('name') 字符串文字调用。因此,它不会找到通过变量名加载的模块

...

即使在优化之后,这种行为也允许动态加载模块。您始终可以使用 include 选项显式添加通过优化器的静态分析找不到的模块。

您不想在其中拥有的所有模块都必须在您的模块中像这样被要求:

define(["require"], function(require) {
        return function(b) {
            var lib = 'lib'
            var a =  require(lib);
            a.doSomething(b);
        }
    }
);

所以它们不会是您初始加载的一部分,而是在需要时加载。

于 2012-12-12T12:39:29.147 回答
0

听起来您最好将单页应用程序拆分为两个共享通用代码的单页应用程序,如 require docs Optimizing a multi-page project中所述。

这意味着对于用户类型 A 和 B 共享的任何内容都应该有一个 HTTP 请求,然后对于用户类型 A 或 B 来说,另一个 HTTP 请求包含特定于该模块类型的模块。

于 2014-11-13T16:47:29.237 回答