如何像vanilla js一样用html运行nodejs

mrwjdhj3  于 2023-01-30  发布在  Node.js
关注(0)|答案(3)|浏览(169)

我对node很陌生,所以我需要这方面的帮助。我知道如何使用nodejs显示html文件,如下所示:
(节点)

var http = require('http');
let fs = require("fs");

http.createServer(function (req, res) {
  fs.readFile("test.html",(err, data) => {
    if(!err) {
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.end(data);
    }
  });
}).listen(8080);

然而,我想知道我将如何使用它来做在js中会做的事情,例如
(js)

document.getElementById("thisElement").style.backgroundColor = "#234";
document.getElementById("thisElement").addEventListener("click",() => {
 doThings();
});

和其他相关的js的东西。

von4xj4u

von4xj4u1#

我知道如何使用nodejs显示html文件,如下所示:
这不会“使用nodejs显示HTML文件”。
它将HTML文件发送到HTTP客户端(如Web浏览器)。
Web浏览器可以显示HTML文件。
然而,我想知道我将如何使用它来做在js中会做的事情,例如
Web浏览器接受HTML,生成DOM,使用客户端Web API运行JavaScript,并提供UI供用户与之交互。
Node.js没有。
JavaScript编程语言是一种通用编程语言。
网络浏览器提供特定的API来完成在网络浏览器中有用的事情。
js提供了在其他上下文中执行操作的API(例如运行HTTP服务器或编写命令行实用程序)。
你不能把设计成在网页浏览器中运行的JS拿到Node中运行,这是没有意义的。
(You可以编写在两种上下文中运行的代码(举个简单的例子,生成一个随机数),但大多数代码并不是那么通用)。

rlcwz9us

rlcwz9us2#

在代码fs.readFile("test.html",(err, data) => {
这一行选择test.html文件,它现在在您的客户端上可用,与此test.html文件相关的任何内容都是客户端内容,因为它是html,您将在其中声明标记和javascript文件引用,如下所示

<html>
    <body>

    <script src = "../../to/js/files.js"></script>
    <!-- or as below -->
    <script>
      //now in here you get to do your fun stuffs as you asked above
       document.getElementById("thisElement").style.backgroundColor = "#234";
       document.getElementById("thisElement").addEventListener("click",() => {
       doThings();
      });
    </script>
    </body>
</html>
n8ghc7c1

n8ghc7c13#

我不认为你可以用节点这样做,因为这不是它的目的,节点是为了服务的东西,而不是改变html或浏览器的东西,因为你想要的,没有DOM的节点。
但是,您可以尝试阅读文件并编辑它插入内容,但这将是一件很难做的事情,一旦你需要改变文本,它可能会是一个数组,或者你可以尝试与表达termplate引擎,你可以使用模板是可变的,当你与节点服务,所以你可以使用变量作为html值.
https://expressjs.com/en/resources/template-engines.html

相关问题