2013-07-05 10 views
6

私は、コンストラクタas-a-functionを持つ名前付きrequirejsモジュールを持っています。requirejs - 必要なときではなく、モジュールが定義されているときに構築する

define('myModule', [ 'import1', 'import2' ], function(i1, i2) { 
    ... 
}); 

私は

  • にできるようにしたいがcorect順には、スクリプトタグ
  • 経由 requirejsのAPIを使用していないHTMLにモジュールを取り付け requirejsのAPI
を使用した を添付し、使用モジュール

今度は、defineという名前のスクリプトをドキュメントに添付します、スクリプトは正常にロードされますが、モジュールは定義されません。コンストラクタは呼び出されません。

これは正常な動作ですか?これを修正する回避策がありますか?

+0

モジュールを何も使用しない(必要とする)ときに何を定義する必要がありますか? – Bergi

+0

1.私はモジュールについて何も知らず、代わりにファイルの添付ファイルに依存するいくつかのレガシーコードを持っています。 2.グローバルシングルトンオブジェクトを含むいくつかのモジュールが必要です。私はそれらを頭の中のスクリプトとして添付したい。他のモジュールに依存しているため、ここではモジュールが必要です。 – Olegas

+0

オプティマイザを搭載したr.jsは、固体の選択かもしれません – dmi3y

答えて

6

スクリプトは正常に読み込まれましたが、コンストラクタは呼び出されませんでした。それは正常な行動ですか?

はい。それらは必要なときにのみ実行され、defineregisterと名前を変更できます。とにかく依存関係を待つ必要があるかもしれません。

これを解決するにはいくつかの回避策がありますか?

実行する場合は、require()に電話をかけてください(not in the same file though)。

私はモジュールについて何も知らず、ファイルの添付ファイルに依存するいくつかのレガシーコードを持っています。

スクリプトの添付は正常に(同期的に)ロードされますが、非同期で実行されます。レガシーコードをrequireにラップする方が良いでしょう(何も破壊してはいけません)。

+0

なぜ同じファイルにありませんか?指定されたリンクから理解できませんでした... – Olegas

+0

技術的には、すべての依存関係がロードされている場合には、モジュールを同期的に実行するための制限はありません(

関連する問題