Как работать с событиями onLoad и onClick в nodejs - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь преобразовать приложение, которое не использует 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 и заменил функции js на кавычки ejs:

<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 действительно заменяются определениями функций load и init, но поскольку эти определения, в свою очередь, используют другие функции, определенные в code.js, браузер не знает, что делатьс ними.

Как правильно это сделать?

1 Ответ

0 голосов
/ 19 июня 2019

Вам не нужно ничего делать с кодом, загруженным в html; этот синтаксис ejs не нужен. Как только вы отправите клиенту html / ejs, он будет запрашивать ресурс js (code.js) как обычно. Если вы хотите, чтобы какой-то код выполнялся на сервере в ответ на какое-либо действие со стороны клиента, вы можете отправить запрос на сервер с необязательными параметрами и заставить сервер возвращать ответ после выполнения некоторой работы.

Вы можете посмотреть на эти ресурсы, чтобы узнать о связи между клиентом и сервером:

...