javascript - 将数据从 JSON 文件传递到 html
问题描述
我编写了以下 Server.js 代码
var http = require('http'); // Import Node.js core module
var GreensKiosk = require('./GreensKiosk');
var server = http.createServer(function (req, res) { // create web server
// Set CORS headers
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET');
res.setHeader('Access-Control-Allow-Headers', '*');
if (req.method === 'OPTIONS') {
res.writeHead(200);
res.end();
return;
}
if (req.url == '/') { // check the URL of the current request
// set response header
res.writeHead(200, { 'Content-Type': 'text/html' });
// set response content
res.write('<html><body><p>Greens Kiosk API.</p></body></html>');
res.end();
}
else if (req.url == "/products") { // check the URL of the current request
res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(GreensKiosk.getItems()));
res.end();
}
else if (req.url == "/products/fruits") {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(GreensKiosk.getItems('fruits')));
res.end();
}
else if (req.url == '/products/vegetables') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(GreensKiosk.getItems('vegetables')));
}
});
server.listen(3000);
我有另一个 GreensKiosk.js 文件,其中包含类似这样的项目数组
let products = [
{
name: 'Mangoes',
category: 'fruits'
},
{
name: 'Apples',
category: 'fruits'
},
{
name: 'Bananas',
category: 'fruits'
},
{
name: 'Oranges',
category: 'fruits'
},
{
name: 'Grapes',
category: 'fruits'
},
{
name: 'Kales',
category: 'vegetables'
},
{
name: 'Onions',
category: 'vegetables'
},
{
name: 'Tomatoes',
category: 'vegetables'
},
{
name: 'Cabbages',
category: 'vegetables'
}
]
我想根据 Server.js 上规定的 URL 将项目解析为 HTML 文件,我正在研究列表性质的 html。以这种方式,为每组列表显示项目。
我是 Node js 的新手,我真的很想对此有一些见解
<ul id="fruList">
<!--fruits here-->
</ul>
<h3>vegetables</h3>
<ul id="vegList">
<!--vegetables here-->
</ul>
解决方案
如果你知道你将需要这个文件,那么你可以同步读取它,如下所示:
var items = require('./items.json');
如果您需要很多不同的列表,并且您并不总是需要此列表,则需要将数据分离到单独的 rest api 中。但是让我们假设您不需要单独的 rest api。如果要异步执行,请使用 fs 和 fs.readFile。顺便说一句,文件中的数据不是 json,它只是一个普通的 ol js 对象。在 json 中,属性名称将带有双引号。要将您的 json 数据转换为 js 对象,请使用 var arrItems = JSON.parse(items)。要按类型分隔项目,请使用:
var fruits = arrItems.filter(i => i.category === 'fruits');
您可能想研究像 mustache 这样的模板库,它可以帮助您将数组转换为 html。
推荐阅读
- r - R plot删除虚线
- php - PHP 使用 CURL 发布 JSON
- java - SFTP 集成 - SftpInboundFileSynchronizer - 如何不再次下载相同的文件
- python - Python将文件写入目录
- r - 我在 R 上遇到日期问题
- javascript - React:在根文件中为包含其他两个组件的组件使用道具
- mysql - 如何从外键列上的mysql表中删除唯一约束
- python - Python 抛出 else: 语句的语法错误
- scala - 使用 scala,当最后一个有 $ 时,我如何比较两种类类型?
- javascript - 如何模糊 HTML 中的内容?