9

私は RequireJs 2.0 を使用しています (または使用しようとしています)。

現在、アセットは「一般」と「カスタム」のパーツにグループ化されています。すべてのページで General スクリプトを使用し、一部のページのみ Custom を使用する必要があります。

私が言えることから、RequireJsは、data-main構成と基本的にモジュールのrequireを保持する1つの値を受け入れます。data-mainすべてのページが同じアセットを使用している場合はこれで問題ありませんが、カスタム ページにスクリプトを追加するにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

3

属性を使用してdata-main、General スクリプトをロードします。カスタム ページで、カスタム モジュールを必要とする何かを実行しようとしている場合は、require呼び出しでラップするだけです。マスター ページ (またはテンプレート、レイアウト、またはサーバー プラットフォームで呼ばれるもの) は次のようになります。

<html><head>
<script language="javascript" src="require.js" data-main="general" ></script>
</head>

カスタム ページのマークアップは次のようになります (メモリからの構文; 再確認してください!)

<p class="funny">I'm a funny paragraph</p>
<script language="javascript">
require(['funny-stuff'], function(fs) {
  fs.doSomthing();
});
</script>

モジュールは、funny-stuffそれを要求するページによってのみロードされます。一部のページで個別のマークアップを使用したくない、または使用できない場合は、require呼び出しをifステートメント内にラップすることにより、メイン スクリプトから依存関係を動的に読み込むことができます。以内general.js:

// Determine if we need the custom module
if (isFunnyPage()) {
  require(['funny-stuff'], function(fs) {
    fs.doSomething();
  });
}

オプティマイザーを実行するときは注意が必要です。オプティマイザーは、require呼び出しで参照されている依存関係を検出し、デフォルトでそれをメイン ファイルにパッケージ化するからです。そのため、カスタム モジュールを除外するようにオプティマイザーを構成する必要があります。

于 2012-05-31T19:17:04.990 に答える