首页 > 解决方案 > 我如何在 html 和 node 之间进行通信?

问题描述

现在标题可能看起来很模糊,但作为一个对节点的菜鸟,甚至很难正确描述我的问题。

但我会尽可能地描述我的问题。

所以我有四个文件:index.html, script1.js, script2.js.

索引.html:

<!-- index.html -->
<html>
    <head>
    </head>
    <body>
        <script src="script1.js"> </script>
    </body>
</html>

script2.js 不包含在 html 中,而是使用 node 命令编译的node script2.js

现在假设我与(终端中的节点)index.html一起编译。从这里,我想向它发送数据以显示传递给 HTML 的数据。script2.jsscript2.jsscript2.jsscript1.js

我想我必须使用服务器,但我想尽量避免使用它(如果这有意义的话)。我怎样才能“在本地”做到这一点?

谢谢,我希望我的解释不会太混乱。我期待着你的任何答案!

标签: javascripthtmlnode.js

解决方案


没有服务器就不可能实现你所描述的。node script2.js如果服务器包含类似于以下的代码,则可以通过运行来运行服务器:

const express = require('express');
const app = express();
const server = require('http').createServer(app);
const path = require('path');


app.use(express.static(path.join(__dirname, 'public')));

server.listen(3000, () => {
  console.log('Server listening at port %d', 3000);  
});

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

app.get('/get-data', function(req, res) {
  // send data from server to script1.js
});

然后当你想从你那里获取数据时,script1.js你会做这样的事情(in script1.js):

fetch('http://localhost:3000/get-data')
  .then(res => { /* do something with data */ })
  .catch(err => { /* handle errors */ });

有一些方法可以在不使用 express 的情况下实现这一点,但这似乎很容易。


推荐阅读