javascript - 我如何在 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.js
script2.js
script2.js
script1.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 的情况下实现这一点,但这似乎很容易。
推荐阅读
- bash - bash:根据提供的选项激活代码的选定部分
- c# - 创建一个空表达式
- ios - 当我设置背景图像时,它会使里面的所有东西都消失(SWIFT)
- azure - Azure 中存储队列的可见性超时
- java - 如何在我的代码中修复此索引错误?
- bash - Mac OS Catalina:更改分支或目录时 PS1 未更新
- xml - 使用 FreeMarker 将肥皂 xml 转换为肥皂 xml
- android - Android Studio 构建旧版本的文件
- javascript - 如何将 vue 项目集成到现有的 react 项目中?
- powershell - 如何在 GitLab 管道中运行 PowerShell 脚本?