如何处理Node.js中的onLoad和onClick事件

时间:2019-06-19 12:59:07

标签: node.js mouseevent dom-events

我正在尝试将不使用node.js的应用程序转换为节点格式。

最初的应用仅包含一个code.js文件和一个index.html文件,如下所示:

<html>
<head>
  ...
  <script type="text/javascript" src="code.js"></script>
</head>
<body onload="load()">
     (...)
    <div style="position:absolute; top:250px; left:20px">
      <input type="button" onClick="init()" value="New game">
     (...)
</body>
</html>

要将其转换为节点格式,我将index.html重命名为views/index.ejs,并用ejs引号替换了js函数:

<html>
...
<body onload="<%= load %>()">
     (...)
    <div style="position:absolute; top:250px; left:20px">
      <input type="button" onClick="<%=init %>()" value="New game">
     (...)
</body>
</html>

我还在我的code.js文件末尾添加了以下内容:

module.exports={
  load:load,
  init:init
}

最后,在我的app.js主节点文件中,有以下相关代码段:

var exportedValues = require('./code.js');
app.get('/', (req,res) => {
   res.render('index.ejs',exportedValues);
});

这几乎可以正常工作:当我检查控制台时,ejs引号的确替换为loadinit函数的定义,但是作为这些定义,依次使用了在code.js,浏览器不知道如何处理它们。

正确的方法是什么?

1 个答案:

答案 0 :(得分:0)

您无需对html中加载的代码做任何事情;不需要那种ejs语法。将html / ejs发送到客户端后,它将正常请求js资源(code.js)。如果要响应客户端的某些操作而在服务器上运行一些代码,则可以向服务器发送带有可选参数的请求,并让服务器在完成某些工作后返回响应。

您可以查看以下资源以了解客户端和服务器之间的通信: