6

約 200 個のモジュールを含む大規模な単一ページアプリケーションがあります -

オプティマイザーを使用すると、すべてのモジュールが 1 つのファイルにまとめられてしまい、見栄えが悪くなります。

しかし、私たちのアプリケーションは一種のマルチテナント アプリケーションであり、すべてのユーザーが 200 個のモジュールすべてを必要とするわけではありません。

モジュールは、50 個の共通モジュール、ユーザー タイプが「A」の場合に必要な 100 個のモジュール、ユーザー タイプ「B」の場合に必要な 50 個のモジュールなどに大別できます。

ユーザー タイプが「B」の場合、ダウンロードされた 1 つの最適化されたファイルには、使用されていない 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 ドキュメントの Optimizing a multi-page projectで説明されているように、単一ページ アプリを共通コードを共有する 2 つの単一ページ アプリに分割した方がよいように思えます。

つまり、ユーザー タイプ A と B で共有されるものには、1 つの HTTP リクエストが必要であり、ユーザー タイプ A または B には、そのモジュール タイプに固有のモジュールを含む別の HTTP リクエストが必要です。

于 2014-11-13T16:47:29.237 に答える