使用Express.js和EJS访问服务器端功能

时间:2013-02-02 20:37:30

标签: node.js express ejs

我正在使用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可以执行服务器端代码?看来快递中的public文件夹仅用于客户端代码。

2 个答案:

答案 0 :(得分:0)

您可以创建模板可以通过app.locals访问的辅助函数:

答案 1 :(得分: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});
)} )};