我正在使用node express构建我的服务器和客户机。
我想我的HTML文件第一(这是由表达静态自动完成),然后JSON文件下,使JSON数据显示在我的html文件很好。
这是我的文件结构
- index.js
- public
|
- index.html
|
- front-end.js
index.js
const express = require('express');
const app = express();
const names = {...}
app.use(express.static('./public'));
app.get('/', (req, res) => {
return res.json({names});
})
front-end.js
axios.get('/')
.then(res => {
console.log(res)
})
.catch(err => {
console.error(err);
})
index.html
<html>
...
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="front-end.js"></script>
</html>
但是JSON数据传输部分不起作用。我在axios
中唯一能得到的res
是index.html文件。它是用static
通过express内部完成的。我看了关于express静态选项的文档,但还没有发现任何线索。
在保留express.static
器件的同时,我还能做些什么?或者我需要更换器件吗?
1条答案
按热度按时间8i9zcol21#
客户端(如浏览器)发出一个HTTP请求,然后得到一个HTTP响应。一个 * 单个 * HTTP响应。你不能对一个请求发送多个响应。
在本例中,浏览器请求
/
,Express依次检查每条路由,直到找到匹配项。由于在使用static
配置/
的目录中有一个index.html
文件,因此它将提供该文件,并且永远不会到达app.get('/'
。也就是说,我不知道一个URL同时提供HTML文档和JSON文本会有什么样的行为,它们本质上是非常不同的东西,处理方式也非常不同。
也许您希望JSON文本中的数据可用于HTML文档中运行的JavaScript。
在这种情况下: