3

一部のモジュールがページで動的に生成された初期化データを必要とする場合、RequireJS ベースのプロジェクトを構築する最善の方法に興味があります。

私の質問を明確にするために、メインの html ページのどこかに次のようなものが必要です。

/* Following lines generated on server side so need to be in the html page*/
var initDataForModule1= [ data, generated, by, server];
var initDataForModule1= [ some, other, data, generated, by, server];

次に、UI を完全にセットアップするためにそのデータを必要とするコードをいくつか用意します (必ずしもロードする必要はありません)。たとえば、次のようなものを含める必要があります。

for(var i=0;i<initDataForModule1.length;i++)
     generateUIElementWithData(initDataForModule1[i]);

では、上記の UI セットアップ コードをモジュールに配置し、何らかの方法でそれをロードして、初期化日付を指定する必要がありますか? または、どちらが良いアプローチでしょうか?私は次のようなことを考えていました:

<script src="/js/lib/require.js"></script>
<script>
    var initDataForModule1= [ data, generated, by, server];
    var initDataForModule1= [ some, other, data, generated, by, server];

    require(['module1'], function(module1){
       module1.initWithData(initDataForModule1);
    });

    ...
<script>

また、自分のrequirejs.config()パートを配置するのに適した場所はどれですか?

4

1 に答える 1

1

サーバー側から JavaScript をレンダリングすると問題が発生します。言語を混在させると、JS ファイルにテンプレート タグが作成されるため、リファクタリングがほぼ不可能になります (これは、検証/リンティング中にもフラグが立てられます)。また、フロントエンドとバックエンドのコードが結合され、プロジェクトの移植性が低下します。


AJAX 呼び出しを行い、実行時に構成を読み取る「テキスト」プラグインを使用することにしました( r.js buildconfig ファイルで設定することを覚えておく必要がありinlineTextfalseます) 。たとえば、次のようになります。

require(['main', 'someDep', 'text!../ajax/config'],
        function(App, someDep, configString) {
    App.start(dep, JSON.parse(configString);
});

"../ajax/config"JSON 形式 (*) で構成を提供する URL へのパスはどこにありますか。

(*) JSON プラグインもありますが、私はそれを機能させることができず、JSON テキストを「手動で」解析することは私にとってそれほど面倒ではありませんでした。

于 2013-11-12T15:22:04.810 に答える