NodeJS 如何在Pug中执行服务器端函数?

hfsqlsce  于 2023-01-16  发布在  Node.js
关注(0)|答案(2)|浏览(166)

代码如下:

const Post = async (url, body) => {
  let res = await fetch(url, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "accept": "*/*"
    },
    body: JSON.stringify(body)
  }).then(r => r.json());
  return res;
}

const likePost = async(postId) => {
  await Post('https://example.com/api/like', {
    _id: postId
  })
}

我想在用户点击喜欢按钮时执行客户端Pug文件中的likePost命令。我看过一些关于堆栈溢出的帖子,发现我可能需要通过HTTP路由或其他方式从服务器向客户端发送触发器。您认为在客户端执行服务器端命令的理想方法是什么?
谢谢你的帮助。

tjvv9vkg

tjvv9vkg1#

首先,了解流程的不同部分。
1.浏览器向服务器发出HTTP请求
1.服务器运行针对特定URL注册的函数
1.该函数将一些数据传递给pug库,并返回一些HTML,然后将该HTML发送给浏览器
1.浏览器呈现HTML并运行其中的任何JavaScript
如果你想在“用户点击喜欢按钮时”做一些事情,那么你是在处理HTML和JavaScript,而不是Pug。你可能需要编辑Pug文件来生成正确的HTML和JavaScript,但是这个动作不会发生在Pug层。
您提供的JS可能被设计为在Node.js * 或 * 客户端运行。因此,如果您希望在客户端运行它(当单击按钮时),则需要使用the addEventListener方法将其附加到按钮。
但是,您的问题讨论的是在 * 服务器端 * 运行函数,因此要做到这一点,您需要:
1.配置你的服务器,当一个给定的URL发出请求时运行该函数。如何配置取决于你构建服务器的方式(例如,使用Express.js中的.post()方法)。
1.点击按钮时请求该URL,通常使用<form action="/path/to/url" method="POST">或链接(用于GET请求)或 AJAX 来执行此操作。

pgvzfuti

pgvzfuti2#

Pug的一般渲染过程很简单。pug. compile()将把Pug源代码编译成一个JavaScript函数,该函数以一个数据对象(称为“locals“)作为参数,然后用你的数据调用该函数,瞧!它将返回一个用你的数据渲染的HTML字符串。

相关问题