isServerブロックを使用してデータを入力するタイミングがわかりません。明らかに、データベース呼び出しなどです。これはクライアントブラウザに表示されますか?
3 に答える
非公式の流星のよくある質問でアドバイスされているように、代わりにあなたのものをフォルダに入れることをお勧めします
上記のフォルダ構造を使用しない場合、つまり、このブロックを使用しない場合でも、if (Meteor.isServer) {...}
このブロックはクライアントに送信されます/server
。ただし、その中のすべてのコードは無視されます。
サーバー側のコードでは、サーバー上でのみ実行するコード、つまり公開機能と、より機密性が高く、ユーザーがアクセスできないデータを配置します。
サーバーフォルダにない限り、クライアントに送信されると思います。グローバル変数の共有に関するコメントの1つに応えて、私はこのパターンを使用しています。クライアントフォルダーとサーバーフォルダーにそれぞれ同じグローバル変数を作成し、共有コードの場合はそれらのフォルダーの外に1回作成します。グローバル変数がすでに存在するかどうかをテストして、各場所でグローバル変数を初期化します。
MyVar = typeof MyVar === 'undefined' ? {} : MyVar;
次に、必要な場所にメソッドを配置します。たとえば、ユーザーが許可されているかどうかをテストするメソッドを持つUserオブジェクトがあります。サーバーのグローバルUserで1回、クライアントのグローバルUserで1回メソッドを宣言します。サーバーバージョンは、クライアントで使用できないユーザーオブジェクトのカスタムプロパティをチェックするため、メソッドは異なります。次に、クライアントとサーバーの両方で実行されるMeteor.methodsメソッドで、承認メソッドを呼び出すことができます。このメソッドは、クライアントとサーバーのどちらで実行されているかに応じて、異なるメソッドを呼び出します。
私は今日同じ質問をしていて、このパッケージに出くわしました:
https://github.com/mquandalle/meteor-minifiers
Meteor.isServer
Meteorはデフォルトでブロックを削除しないようです。このディスカッションを参照してください。
https://groups.google.com/forum/#!topic/meteor-talk/iHat47f6iGE
今のところ使っていませんが、有望そうです。
追加のパッケージを使用したくない場合は、client
およびserver
フォルダーを使用することをお勧めします。フォルダ内のファイルのみがclient
クライアントに送信されます。