代码如下:
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路由或其他方式从服务器向客户端发送触发器。您认为在客户端执行服务器端命令的理想方法是什么?
谢谢你的帮助。
2条答案
按热度按时间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 来执行此操作。pgvzfuti2#
Pug的一般渲染过程很简单。pug. compile()将把Pug源代码编译成一个JavaScript函数,该函数以一个数据对象(称为“locals“)作为参数,然后用你的数据调用该函数,瞧!它将返回一个用你的数据渲染的HTML字符串。