2

タイトルが説明的ではないかもしれないと感じています:)

設定

次の構造があるとします。

ここに画像の説明を入力

ここで、app.jsファイルは、次のようなアプリケーションのメインのブートストラップ/エントリ モジュールです。

app01

require.config({});

require([
    'app/component1.js'
], 
function(component){
    // do something with component1
});

app02

require.config({});

require([
    'app/component2.js'
], 
function(component){
    // do something with component2
});

どちらも適切なindex.htmlファイルで動作します。

app01 の RequireJS ビルド構成ファイル (パスに関連する正しい配置を想定) があります

({
    appDir: 'apps/app01',
    baseUrl: '.',
    dir: 'built_apps/app01',
    optimize: 'closure',
    paths: {
    },

    modules: [
        {
            name: 'app'
        }
    ]
})

これは問題なく動作します。同様のファイル ( に置き換えるapp01)app02は、app02で問題なく機能します。

問題・対象

ここで、app01app02の両方のアプリケーションに対して、同じビルド構成ファイルを使用して、できれば実際にすべてのアプリは名前で表示されます (数と名前は時間の経過とともに変化する可能性があるため)。

基本的に、私は次のようなものを期待しています(またはむしろ望んでいます):

({
    appDir: 'apps',
    baseUrl: '.',
    dir: 'built_apps',
    optimize: 'closure',
    paths: {

    },

    modules: [
        {
            name: 'app*/app' // notice the wildcard
        }
    ]
})

これはbuilt_appsディレクトリ上で実行され、app*/app の下にあるすべてのアプリを見つけて、それぞれを最適化します。

Ant を使用して、アプリごとにオンザフライでそのようなビルド構成ファイルを作成し、それに対してビルドを実行してからクリーンアップできることは知っていますが、RequireJS ソリューションが必要です。

RequireJS でこのようなことを行う方法はありますか?

4

1 に答える 1

2

RequireJSには組み込みのワイルドカード構成はありません。いずれにせよ、これを行うにはコードが必要です。ここで求めているのは、 mustache.jsがテンプレートに提供するものと同様に、ワイルドカードをモジュールオブジェクトのある種の暗黙的な反復に変換することです。IMO、これはこのコンテキストではかなり脆弱で制限されたアプローチです。

代わりにmodules、ビルド構成でJavaScriptを使用してプログラムで配列を生成することをお勧めします。ビルド構成は単なるJSONデータ構造ではなくJavaScriptであることを思い出してください。これにより、高度なスクリプト機能が提供されます。

requirejs-railsgemのビルド構成でこの種のスクリプトを実行しました。これは、ビルド時に 何が表示されるかを示す要点の例です。r.js

于 2012-04-20T22:33:18.520 に答える