1

私は、モジュールがページを提供する前にページに追加されるJSファイルを定義できるようにするフレームワークを作成しています。アイデアは、モジュールが次のようなものを追加する可能性があるということです。

require([ 'dojo/topic', 'dojo/_base/window', 'hotplate/hotDojoWidgets/AlertBar' ], function( topic, win, AlertBar
){
  globalAlertBar = new AlertBar( { background: '#FF4444' } );
  globalAlertBar.placeAt( document.body, 'first' );
  globalAlertBar.startup();

  topic.subscribe('globalAlert', function( message, displayFor ){
    displayFor = displayFor || 2500;
    globalAlertBar.set( 'message', message );
    globalAlertBar.show( displayFor );
  });
});

globalAlertこれにより、たとえば、alertBarを表示するために、アプリケーション周辺の他のウィジェットを公開できるようになります。たった今:

  • ロードするJSのリストに追加されたJS/Dojoファイルは、「require」で始まります。私にとって、これはロード後のある時点で実行される単なる非同期コードです。フレームワークにこのようにロードされたコードのほとんどは、トピックが公開されるのを待ち、それに応じて動作します
  • 「アプリケーション」は、コンテナのオブジェクトを公開するトピックをサブスクライブするモジュールの1つにすぎません。
  • require()によってロードされた「適切な」Dojoウィジェットは明らかに「define」を使用します-これは通常どおりのビジネスであり、心配する必要はありません。

質問:

1)ready()ページで参照されているJS / Dojoファイルの1つで実行した場合、それはドキュメントにロードされたすべての.jsファイルを含むページレベルのready()になりますか?または、現在のファイルによってロードされたファイルに対してのみですか?

2)物事を行う「正しい」方法は、実行するJSファイルを1つだけrequire()にし、それから他のすべてをロードすることです(または、data-dojo-mainを使用する方がよいことを理解しています)。しかし、私は独立して動作し、ページに自分自身を追加するモジュール(サーバーとクライアントのコードを使用)を定義しようとしています...したがって、アプリケーションページに多数のファイルを入れてから、それらを入れるのは実際には悪い習慣ですか?require()Dojoコードを実行していますか?

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

メルク。

PS興味があれば、https://github.com/mercmobily/hotplate ...プロジェクトはここに投稿した後に開始されました!

4

1 に答える 1

1

ページ/ファイル/スクリプトごとに必要な数の要件を設定できます。これは、ページごとに1回だけ使用する必要があることを定義しています。これにより、ページ/スクリプトの場所とモジュールIDが関連付けられます。defineは、厳密にはウィジェット用ではありません。関数、コンストラクター(クラス)、シングルトンオブジェクト、または何も返さずに何らかの作業を行うことができるモジュールを定義します。

requireは非同期です。したがって、すべての依存関係の読み込みが完了したときに起動するコールバックメソッドは次のとおりです。

require(modules, callback);

dojo/readyは本質的に「ブロック」ベースです。すべての依存関係がロードされ、DOMの準備が整うまで、コールバックは起動しませ。これはページベースでもグローバルでもありません。最初の要求がDOMを待機している場合、最初の要求の前に2番目の要求がページに発生する可能性があります。

于 2013-01-02T01:20:53.920 に答える