0

テンプレートエンジンとしてEJSを使用して、Express.jsでテストアプリを実行しています。.jsファイルに保存されている関数にアクセスして、クライアント側ではなくサーバー側で実行したいのですが。たとえば、私が持っている場合:

<%= console.log("I'm in the server console"); %>

サーバーはコンソール出力をキャッチします。

<script type="text/javascript"> console.log("I'm in the client-side console"); </script>

これで、クライアント側に同じものを出力する関数がある場合、次のように含めることができます。

<script type="text/javascript" src="/javascripts/clientSideCode.js"> clientSideOutput(); </script>

しかし、EJSがサーバー側のコードを実行できるように、ファイルとその関数をそのように含めるにはどうすればよいですか?Expressのpublicフォルダは、クライアント側のコード専用のようです。

4

2 に答える 2

0

テンプレートが次の方法でアクセスできるヘルパー関数を作成できますapp.locals

于 2013-02-02T22:29:09.817 に答える
0

node.jsSocket.IOを使用して、クライアントとサーバーの間でリアルタイムのイベントを発行できます。たとえば、クライアントは次のようにします。

<script>window onload = function() {

socket.emit('request_customer_list', { state: "tx" });

socket.on('receive_customer_list', function(data) {
$.each(data.customer_list, function(key, value) {

  socket.set(key, value); // store the customer data and then print it later
});

});}

サーバーでは、顧客リストをロードして同様の形式で送り返すルーチンを作成できます。

socket.on('connection')
  socket.on('request_customer_list', function(data){
   state = data.state;
   var customer_list;
   // pretend i loaded a list of customers from whatever source right here
   socket.emit('receive_customer_list', {customer_list: customer_list});
)} )};
于 2013-07-03T22:51:41.003 に答える