2013-08-09 10 views
6

私はテスト流星アプリケーションを作成し、私は全体のコード(サーバー側も)クライアントで開発ツールを見て利用できることがわかりました。 テストアプリ(ブラウザ):Meteorバックエンドコードは常にクライアント側で利用可能ですか?

(function(){ if (Meteor.isClient) { 
     Template.hello.greeting = function() { 
     return "Welcome to test_app."; 
     }; 

     Template.helo.events({ 
     'click input' : function() { 
      // template data, if any, is available in 'this' 
      if (typeof console !== 'undefined') 
      console.log("You pressed the button"); 
     } 
     }); 
    } 

    if (Meteor.isServer) { 
     Meteor.startup(function() { 
     // code to run on server at startup 
     }); 
    } 

    }).call(this); 

これは仕様です。サーバーサイドのコードはサーバーに残ることができますか?

答えて

13

サーバ側のコードをサーバに保存したい場合は、アプリの構造を変更する必要があります。

アプリケーションのルートディレクトリにこれらのディレクトリを作成します。

  • /サーバー - のみ
  • /クライアントサーバー上で実行するすべてのものを保存する - /のみ
  • クライアント上で実行するすべてのものを保存しますpublic/- http://yoursite/(つまり、画像、フォント)でアクセス可能なものを格納します。あなたは/publicで画像a.jpgを配置する場合、それはあなたがこの構造を使用すると、あなたは彼らが適切な場所で実行されてもはやif(Meteor.isServer) {..}またはif(Meteor.isClient) {..}条件を使用する必要はありませんhttp://yoursite/a.jpg

で利用できるようになります。

あなたの流星アプリケーションのルートディレクトリにファイルを置く場合は、ファイルがサーバー上でのみ実行しますif(Meteor.isServer)で変更されていない&すべてがある理由ですので、彼らはクライアントの両方でサーバーを実行します。

それはクライアント&サーバー

+0

Akshat、感謝の両方に見えるだろうけれどもそれは、サーバとクライアントの間でコードを共有するために設計、非常に有用です。それは理にかなっています。 –

+5

if(Meteor.isServer){}を使用しても、サーバーのコードがサーバーフォルダーにない場合は、サーバーコードをクライアントに送信します。 – ripit

+1

'meteor create'のフォルダレイアウトオプションを使用する直接の選択肢はありませんが、例の1つをスケルトン 'meteor create --example'として使うことができます。 - https:// github.com/matteodem/meteor-boilerplate – backdesk

関連する問題