6

現在のプロジェクト環境 (開発または運用など) に応じて異なるファイルをロードする機能はありますか? つまり、圧縮されたファイルまたは完全なファイルを透過的にロードするのに役立ちます。マルチバージョンの読み込みについて読みましたが、マルチバージョンとは、ファイルのバージョンを指定する必要があることを意味します。
たとえば、モジュールに module.js ファイルがあります。このファイルでは、jQuery をロードする必要があります。

require(['jquery]);

しかし、私は jQuery の縮小版と完全版を持っており、別のファイルをロードしたいと考えています。私は構成で次のようなことを考えています:

   require.config({
        paths: {
            'jquery' : function(){
                if( MODE == 'DEV' ){
                    return 'jquery';
                }else{
                    return 'jquery.min'
                }
            }
        }
    });

あるいは、似たようなものかもしれません。

4

2 に答える 2

2

誰かがまだそれを行う方法を知りたい場合:

require.config({
    paths: {
        'jquery' : (function(){
            if( MODE == 'DEV' ){
                return 'jquery';
            }else{
                return 'jquery.min'
            }
        })()
    }
});

この関数は自己呼び出し型の無名関数です。定義場所ですぐに呼び出します。

于 2014-08-26T02:11:03.990 に答える
2

r.js オプティマイザを使用すると、このプロセスを処理できます。開発目的のために、scriptsフォルダー内のすべてのモジュール、ライブラリ、およびその他のコードを非圧縮のままにします。私はよくこんなことがあります

scripts/
    lib/
    modules/

デプロイの準備ができたら、 を作成しbuild.jsてさまざまなオプションを設定します。私が使用した同様の構成の例を示します。

({
    baseUrl: '../scripts',
    dir: '../scripts.min',

    paths: {
        'jquery': 'lib/jquery'
    },

    removeCombined: true,

    optimize: 'uglify',
    preserveLicenseComments: false,
    uglify: {
        max_line_length: 3500,
        no_copyright: true
    },

    modules: [
        {
            name: 'module1'
        },
        {
            name: 'module2',
            exclude: ['jquery']
        }
    ]
})

この各オプションの詳細については、この設定例を参照しdirてください。removeCombined

dir明らかに、スクリプトが終了する場所です。.minスクリプトに隣接して、サフィックスまたは類似のものを使用してフォルダーを作成する傾向があります。baseUrl次に、本番環境に移行する準備が整ったら、require configを次のように変更します。scripts.min

require.config({
    baseUrl: '/scripts.min' // Now the site will load scripts from the optimised folder

    // Other options
})

デフォルトでは、r.js は、別の js ファイルに既に結合されているかどうかに関係なく、すべてのスクリプトをコピーします。を に設定するremoveCombinedtruescripts.minフォルダーには本番環境に必要なファイルのみが含まれるようになります。

于 2012-11-13T10:48:04.733 に答える