javascript - 如何通过点击事件与 Node.js 服务器通信?
问题描述
来自纯粹的前端背景,每当点击 DOM 中的元素时,我都会监听该点击并调用一些函数来做某事。
例如,如果我单击帖子上的收藏图标,我可以调用一个函数将该帖子推送到收藏夹数组中。但这纯粹是在客户端,并且此类数据不存储在某些数据库中(可能仅在某些本地存储中)。
我的问题是,在像 Node.js 这样的服务器环境中,我如何处理鼠标事件/按键事件并调用服务器中的函数来做某事(例如将某些内容存储到数据库中)?这是否意味着在我的示例中单击最喜欢的图标后,我实际上需要执行一个 POST 请求?
解决方案
这是否意味着在我的示例中单击最喜欢的图标后,我实际上需要执行一个 POST 请求?
对,就是这样。客户端和服务器是两个完全独立的应用程序,在独立的上下文中运行,并且基本上彼此没有任何关系。要中继该数据,您必须以某种方式通过网络发送它。您的选择是 HTTP、WebSockets 或 WebRTC。
HTTP 是一个不错的选择,您可以将它与 XHR 或客户端上的 Fetch API 一起使用。在服务器上,您将通过设置 HTTP 服务器然后处理数据来接收这些 HTTP 请求。Express 是一个使这变得简单的软件包,但设置了路由和一些其他有用的选项。
此外,请考虑客户端上的新 Beacon API。 https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API 这是一种更有效的发送跟踪数据的方式,甚至可以在您的页面上下文被拆除后工作。也就是说,您可以准确跟踪某人何时退出您的页面。
推荐阅读
- angular - 角度拦截器处理 [object,object]
- web-scraping - 当我在输入字段中输入一些文本并在 Puppeteer 中按 Enter 键时,WaitForSelector 不起作用
- javascript - 如何在循环Vue中为每个孩子设置不同的状态变量
- php - FFMPEG 在终端中工作,但不在 php 脚本中
- selenium - Python - 无法从带有嵌入脚本的网页中获取所有文本 - Selenium、ChromeDriveManager、BS、requests_html
- php - 如何更改 Maatwebsite 包(LaravelExcel)中的关闭以导出不带双引号的数据
- vba - 如何在 VBA 中复制没有数字的 MS-Word“列表段落”文本字符串
- amazon-web-services - 如何使用 Terraform 使 AWS CloudFront Distribution 缓存失效?
- python - 字典式减法
- android - 模拟器预览未像模拟器一样在 Jetpack Compose 中显示