我对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的东西。
3条答案
按热度按时间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可以编写在两种上下文中运行的代码(举个简单的例子,生成一个随机数),但大多数代码并不是那么通用)。
rlcwz9us2#
在代码
fs.readFile("test.html",(err, data) =>
{这一行选择test.html文件,它现在在您的客户端上可用,与此test.html文件相关的任何内容都是客户端内容,因为它是html,您将在其中声明标记和javascript文件引用,如下所示
n8ghc7c13#
我不认为你可以用节点这样做,因为这不是它的目的,节点是为了服务的东西,而不是改变html或浏览器的东西,因为你想要的,没有DOM的节点。
但是,您可以尝试阅读文件并编辑它插入内容,但这将是一件很难做的事情,一旦你需要改变文本,它可能会是一个数组,或者你可以尝试与表达termplate引擎,你可以使用模板是可变的,当你与节点服务,所以你可以使用变量作为html值.
https://expressjs.com/en/resources/template-engines.html