我正在使用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
文件夹仅用于客户端代码。
答案 0 :(得分:0)
您可以创建模板可以通过app.locals
访问的辅助函数:
答案 1 :(得分:0)
您可以使用node.js和Socket.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});
)} )};