📜  在 ejs 中同时使用服务器传递的值和客户端 js - Javascript (1)

📅  最后修改于: 2023-12-03 15:07:39.015000             🧑  作者: Mango

在 EJS 中同时使用服务器传递的值和客户端 JS

EJS 是一种 JavaScript 模板引擎,它允许我们在服务器端使用 JavaScript 生成动态 HTML 页面。在使用 EJS 来构建应用时,我们经常需要在服务器端将数据传递给 HTML 页面,并且还需要在客户端使用 JavaScript 来实现一些交互性行为。在本文中,我们将探讨如何在 EJS 中同时使用服务器传递的值和客户端 JS。

传递服务器值到 EJS 模板

在 EJS 中,我们可以使用 <%= %> 来输出我们从服务器端传递的值。下面是一个简单的例子:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
  </head>
  <body>
    <h1><%= message %></h1>
  </body>
</html>

在上面的例子中,我们使用了 <%= %> 来输出服务器端传递的值。我们可以在服务器端传入一个包含 titlemessage 的对象:

app.get('/', function (req, res) {
  res.render('index', {
    title: 'Hello World!',
    message: 'Welcome to my website'
  });
});

当浏览器请求该页面时,EJS 将会渲染 index.ejs 模板并将 titlemessage 输出到 HTML 页面中。

在客户端中使用 JavaScript

如果我们需要在客户端使用 JavaScript 来添加一些交互性行为,例如点击按钮或者显示动画效果,我们可以将 JavaScript 代码写在 <script> 标签中。下面是一个简单的例子:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
  </head>
  <body>
    <h1><%= message %></h1>
    <button id="btn">Click me</button>
    <script>
      document.getElementById('btn').addEventListener('click', function () {
        alert('Hello, world!');
      });
    </script>
  </body>
</html>

在上面的例子中,我们添加了一个按钮,并在 JavaScript 中为按钮添加了一个 click 事件监听器。当我们点击按钮时,会弹出一个对话框显示 'Hello, world!'。

同时使用服务器值和客户端 JS

我们也可以同时使用服务器端传递的值和客户端 JavaScript。例如,我们可以在服务器端传递一个数组,并在客户端使用 JavaScript 来迭代该数组并显示其内容:

<!DOCTYPE html>
<html>
  <head>
    <title><%= title %></title>
  </head>
  <body>
    <ul>
      <% for (var i = 0; i < items.length; i++) { %>
      <li><%= items[i] %></li>
      <% } %>
    </ul>
    <button id="btn">Add item</button>
    <script>
      var items = <% JSON.stringify(items) %>;
      document.getElementById('btn').addEventListener('click', function () {
        var newItem = prompt('Enter new item:');
        items.push(newItem);
        updateList();
      });
      function updateList() {
        var listItems = '';
        for (var i = 0; i < items.length; i++) {
          listItems += '<li>' + items[i] + '</li>';
        }
        document.querySelector('ul').innerHTML = listItems;
      }
    </script>
  </body>
</html>

在上面的例子中,我们需要将服务器传递的数组转换为 JSON 字符串,然后使用 JavaScript 在客户端重新构建该数组并进行操作。

我们在页面中添加了一个按钮,并为其添加了一个 click 事件监听器。当我们点击按钮时,会弹出一个对话框要求输入新的条目。当我们输入新的条目并点击确定时,该条目会被添加到数组中,然后使用 updateList() 函数更新列表的内容。

总的来说,EJS 可以让我们很容易地在服务器端生成动态 HTML 页面,并借助客户端 JavaScript 实现交互性。通过合理使用 EJS 和客户端 JS,我们可以轻松构建令人瞩目的 Web 应用。