0

Node.js 上の Mojito では、http://developer.yahoo.com/cocktails/mojito/docs/quickstart/の例に従いました。

に名前を変更controller.server.jsし、 「Hello World」を表示controller.server-foo.jsする新しいファイルを作成しました。controller.server.js

しかし、mojito が開始されると、古いファイルcontroller.server-foo.jsが使用されているため、「Hello World」は出力されません。なぜ Mojito は古いファイルを使用するのでしょうか?

(私も名前を変更しようとcontroller.server-foo.jsしましたがfoo-controller.server.js、今では「Hello World」が印刷されていますが、なぜcontroller.server-foo.js使用されているのですか?)

4

2 に答える 2

0

@チャールズ、モヒートには3つの登録プロセスがあります(はい、最初は混乱します):

  • アフィニティ (サーバー、クライアント、または共通)。
  • yui モジュール (コントローラー、モデル、バインダーなど) を作成するときの YUI.add
  • あまり一般的ではありませんが、名前による登録です (これには、セレクターと呼ばれるものが含まれます)。

あなたの場合、「foo」という名前のカスタムセレクターを備えた2つのコントローラーを使用することで、3つの登録を一度に使用することができます。内部的には次のようになります。

  • コントローラーは常に、名前による登録の一部である mojit フォルダーから「コントローラー」ファイル名として起動されます。コントローラーの 1 つに「foo」セレクターがあるため、mojit は「デフォルト」および「」モードにする必要があります。ふー」。それらのどれが使用されますか?デフォルトでは空である「セレクター」の値を設定するためのいくつかの条件を持つことができるapplication.jsonに依存します。たとえば、デバイスが iphone のときにセレクターの値を「foo」に設定すると、その条件が一致したときにそのコントローラーが使用されます。
  • 次に、YUI.addが重要な役割を果たします。これは、どのコントローラーを使用する必要があるかを識別する方法です。その唯一の要件は、アプリ内の他のモジュールが同じ YUI モジュール名を持つことができないことです。つまり、コントローラーに名前を付けることはできません。を通じて登録する場合も同様YUI.addです。そして、これがあなたの場合に起こっていることだと確信しています。両方が一方の下で同じ名前を持っている場合、YUI.add()常に他方を上書きします。おそらく、ログに警告として表示されるはずです。そうでない場合は、github から問題を開いてください。

要約する:

  • YUI モジュールを登録するときに使用される名前は一意である必要があります。この場合、各コントローラーにYUI.add('MyMojit', function(){})およびを使用できます。YUI.add('MyMojitFoo', function(){})
  • セレクター (例: controller.server-mobile.js) を使用して、特定のリクエストに使用する YUI モジュールを選択しselectorますapplication.json
于 2013-03-11T17:01:00.847 に答える
0

歴史的に、コントローラーの「親和性」は 2 つの部分であることがわかりました。最初の部分はcommonserver、またはclientであり、2 番目の部分はオプションであり、 、または他の言葉である可能性があるため、無効にするtestsなどの他の名前を使用してください。controller-not-used-server.js

于 2013-02-07T03:18:40.290 に答える