【问题标题】:Simple Node.JS application to read / write to a local file用于读取/写入本地文件的简单 Node.JS 应用程序
【发布时间】:2014-11-08 19:20:28
【问题描述】:

我有一个文件,其中存储了 10 个变量,在我的系统本地。我希望其他人在连接到我的系统时可以使用它。 这将仅在我的 LAN 中使用,而不是在 Internet 上使用,因此无需担心安全性。我想创建一个使用 HTTP 请求/响应进行通信的简单客户端-服务器应用程序。

我可以使用 HTML 和 Javascript,但我对 Node JS 的了解有限。我创建了一个带有 10 个空白标签和一个“显示”按钮的 HTML 页面。当我单击按钮时,我希望读取文件并将 10 个变量中的每一个都显示在标签中。 这是一个包含两个变量和一个按钮的示例。

**index.html**
<html>
<body>
<form method="post" action="/">
<fieldset>
<legend><h2>Parameters:</h2></legend>
System ID : <textarea name="my_id" id="my_id" size="2"></textarea><br >
System IP : <textarea name="my_ip" id="my_ip"  size="15"></textarea><br>
<input id="show" type="submit" name="show" value="SHOW"><br>
</fieldset>
</form>
</body>
</html>

我该怎么做?除了 Node JS 还有什么更简单的方法吗? 如果这可行,我还想用用户的输入覆盖同一文件中的变量(使用不同的“提交”按钮)。

【问题讨论】:

  • 在网上,这可以通过 Google Form 和/或 Google Sheet 完成,无需编写任何代码。这更容易吗?
  • 不,我说过我不能通过互联网使用它。
  • 你可能想看看Meteor 而不是节点。对于节点,大多数人会使用 Express 库来处理 HTTP 函数和请求路由,但即便如此,您仍然会在相当低的级别上工作。 Meteor 非常适合简单的单页应用程序。
  • Meteor 似乎很有帮助,我会修改它一段时间,然后返回结果。感谢您的快速回复,保罗。
  • Meteor 非常庞大(用户友好但不简洁),并不是我想要的。无论如何,谢谢你的帮助,保罗。

标签: javascript jquery html node.js http


【解决方案1】:

我建议只使用 http 模块和 fs 模块,但由于您仍在学习 nodejs,我建议您使用 expressjsflat-file-database

因此,当您为小型 web 应用创建路由时,它可能看起来像这样:

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

// Stores data from the form
app.post('/form', function(req, res) {
    var data = req.body;
    db.put('data', data); // Saves data to the flat file db
    res.status(201);
});

// Gets data from the db
app.get('/form', function(req, res) {
    var data = db.get('data');
    res.status(200).json(data);
});

您需要在客户端代码中的 /form 处“发布”数据。 要获取数据,只需在 /form 发出获取请求

还要记住,要使用 express 解析表单数据,您需要 body-parser middleware。 哦,请注意,我不知道平面文件数据库是否是异步的,所以您可能需要自己检查。

【讨论】:

  • 谢谢。如果我确实从 get 请求中收到了这 10 个变量怎么办? body-parser 会分别给我每个变量,以便我可以在字段中设置它吗?
  • 如果你发出一个 get 请求,express 可能有一个内置的查询字符串解析器,它可以在 req.query 中显示你的变量。它将为您提供 js 对象中的变量,而不是数组,除非您从客户端以数组的形式发送它。
  • 我很难理解这一点。如果我使用“显示”按钮请求变量,它会将我重定向到带有结果的不同页面。如何让它填写我在同一页面上设置的文本区域框?
  • 为了获取数据,我建议使用模板引擎或简单地在 html php-style 中插入数据。因此,如果你发送一个 get 请求,你应该这样写: res.send('
    所以我需要用 res.send 创建一个类似的网页并手动插入值?但是当我在新页面上再次点击“显示”时它不会中断吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
相关资源
最近更新 更多