在 html 文件中调用 node.js 函数

新手上路,请多包涵

这很可能是一个重复的问题。

我得到的最接近答案的是: execute a Nodejs script from an html page?

然而,我还是无法理解。

所以情况是这样的:

我有一个包含以下文件的快速服务器设置:

  • 快递应用

服务器.js index.html

现在我希望 html 文件夹有一个按钮,它调用 node.js 文件中设置的函数。

告诉我是否需要更多信息,谢谢!

编辑:我正在重新制作问题以使其更加清晰。

我正在使用一个快速服务器来呈现一个网站,该网站呈现一个按钮,上面写着“关闭电源”,我希望这个按钮能够在我的服务器计算机上执行一个动作,该动作是一个终端命令来关闭它。

我想知道如何制作以 HTML 编写、托管在服务器上但呈现给客户端的上述按钮,以便与托管在服务器上的 server.js 文件进行交互,该文件将具有执行上述命令的功能集。

谢谢!

原文由 hiperbolt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
2 个回答

您需要更好地了解网页的客户端/服务器架构如何工作、代码实际运行的位置以及客户端和服务器如何相互通信。

您不能从 HTML 文件直接在 node.js 服务器上调用函数。 HTML 文件位于客户端的浏览器中。节点服务器就是你的web服务器,远离不同电脑上的客户端浏览器。尽管您的 HTML 看起来像是在您的 node.js 服务器上,因为它位于该服务器上的一个目录中,但这只是它的存储位置。当浏览器请求该页面时,您的 node.js 服务器将 HTML 发送到客户端的浏览器,并在客户端浏览器中呈现,这就是该页面中运行 Javascript 的地方(在客户端的浏览器中,远离您的 node.js服务器)。这是一个客户端-服务器架构。 HTML 页面在客户端上运行。 node.js 服务器在您的服务器上 - 不同的计算机。

如果你想从网页与node.js服务器通信,那么你使用HTML页面中的Javascript从网页中的Javascript向node.js服务器进行Ajax调用(Ajax调用是一个http请求).然后,您在 node.js 服务器中为该特定的 Ajax 调用配置一个路由,然后您可以在 node.js 中编写代码,以在收到该 Ajax 调用时执行任何您想做的事情。它可以在服务器上执行一些操作,它可以检索数据并将其返回给客户端,等等……您可以选择使用 Ajax 调用发送数据(作为 GET 请求的查询参数或作为 POST 的主体数据请求),然后服务器可以选择将数据返回给您(通常是 JSON,但它可以是您喜欢的任何格式)。

原文由 jfriend00 发布,翻译遵循 CC BY-SA 3.0 许可协议

我不是 Node 专家,但我认为这里发生的事情模糊了服务器和客户端之间的界限。尽管两者都使用 JavaScript,但还是有区别的。 NodeJS 可以很容易地被 Ruby、PHP、Java 以及您喜欢的任何后端语言所取代,并且这种区别将以与在服务器上使用 JavaScript 时相同的方式应用。没有区别。

服务器端代码在服务器上执行。客户端代码在客户端(浏览器)上执行。如果您需要调用 NodeJS 函数(假设它必须与其他服务器端代码(如数据库等)交互),那么您可以通过 AJAX 或标准 HTTP 向服务器上的路由发送请求并调用该函数路线内。

另一方面,如果该函数足够通用并且不涉及任何特定的 Node 代码,那么您可以简单地将带有 JavaScript 文件的脚本标记添加到 index.html 页面。

原文由 Luke K 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题