[英]How to use Node.js to read data from a json file and display the read data into html?
[英]How to use Node.js to serve an HTML page which then writes data to a JSON file
我是NodeJS的菜鸟,我正努力了解NodeJS,HTML和JavaScript的交互方式...
我有一个使用NodeJS投放的HTML文件。 在HTML中,有一堆JavaScript代码吸收用户输入并组装一个对象。 现在,我想将此对象写入JSON文件。
以下是简化的HTML:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>MetaFlex</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<style>...
</style>
</head>
<body>
<div id="wholePage" class="container-fluid">...
</div>
<script>
// global dictionary object
let dictionaryObject = [];
$(document).ready(function () {
... get user input, do some stuff, add results to dictionaryObject ...
// write the dictionary to a JSON file
writeDictionary();
});
// write object to JSON file
function writeDictionary() {
var fs = require("fs");
fs.writeFile("./dictionaryObject.json", JSON.stringify(dictionaryObject, null, 4), (err) => {
if (err) {
console.error(err);
return;
};
console.log("File has been created");
});
}
</script>
</body>
</html>
...这是服务器代码(app.js):
var http = require('http');
var url = require('url');
var fs = require('fs');
http.createServer(function (req, res) {
var q = url.parse(req.url, true);
var filename = "." + q.pathname;
fs.readFile(filename, function(err, data) {
if (err) {
res.writeHead(404, {'Content-Type': 'text/html'});
return res.end("404 Not Found");
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
return res.end();
});
}).listen(8080);
我通过以下方式提供HTML:
显示页面后,我可以输入写入DictionaryObject的数据。
但是,当JS进入“ require”功能时,我得到以下信息:
Uncaught ReferenceError: require is not defined
at writeDictionary (metaFlex.html:1286)
at HTMLButtonElement.<anonymous> (metaFlex.html:1220)
at HTMLButtonElement.dispatch (jquery.min.js:2)
at HTMLButtonElement.y.handle (jquery.min.js:2)
我觉得我必须缺少一些关键的难题。...我是否缺少HTML顶部的包含项? 是否需要将HTML文件拆分为HTML和JS组件? 我应该放弃疯狂的JSON梦想,写一个普通的本地文本文件吗? 你不能教老狗新的花招吗? 叹息
您的爱和指导将我带回到道路上,将不胜感激!
您可以在服务器端使用带有nodejs的json,而不是在客户端中编写代码,而可以使用AJAX添加术语,您需要在服务器中使用路由,而不仅仅是像这样提供html,如果字典对于所有人都通用如果每个客户端都有特定的词典,将是最佳解决方案的客户端,您可以为每个文件添加一个标识符(Dictionnary)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.