我正在尝试创建一个node.js
应用程序,该应用程序从HTML文件中的文本框中获取输入。我想将这个值存储在一个数组中,虽然我不知道如何。我的总体目标是创建一个聊天应用程序,我假设有一些更简单的方法来获取输入而无需引用HTML文件。
此外,是否有任何html文件的模板,因为我不够熟练使用HTML来制作一个体面的网页。所以,如果有一些我可以使用的模板,一切看起来都会更好。
我的代码:
var events = require('events');
var express = require('express');
var http = require('http');
var app = express();
var msg = [];
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
app.read('/', function() {
});
app.listen(3000, function() {
console.log("Server is running on port " + 3000);
});
#firstHead {
font-family: Georgia, 'Times New Roman', Times, serif;
}
<header>
<h1 id='firstHead'>
This is a header!
</h1>
</header>
<body>
<input type="text" id="inText" placeholder="Enter text here" />
</body>
帮助表示赞赏!
答案 0 :(得分:0)
首先,您的HTML代码有很多错误。这是您的代码的正确版本(您不会使用它,它只是为了让您了解您已经完成的错误):
<!DOCTYPE html>
<html>
<head>
<style>
#firstHead {
font-family: Georgia, 'Times New Roman', Times, serif;
}
</style>
</head>
<body>
<h1 id='firstHead'>
This is a header!
</h1>
<form id="msg" method="GET" action="/msg">
<input type="text" name="msgContent" id="inText" placeholder="Enter text here" />
<input type="submit" value="Send">
</form>
</body>
</html>
&#13;
现在这个HTML页面会将输入内容作为POST请求See here for more details发送到localhost:3000/msg
,这里的问题是该页面将被刷新或重定向(根据您的实现,您应该在这种情况下使用AJAX如果你想要SPA)。即使您使用了AJAX,您也很难使用HTTP请求实现聊天应用程序。使用WebSocket协议来实现此功能会更好。有一个名为Socket.io的模块可以为您提供很多帮助。它有一个事件驱动系统,因为它非常适合实时应用,你可以查看他们的官方网站;他们有一个用几百行代码编写的聊天应用程序的例子。
现在让我们转到您的服务器端代码,首先......没有名为read
的快递方法,这里是您的代码的工作版本:
var express = require('express');
var http = require('http');
var app = express();
var msg = [];
app.get('/', function(req, res){
//You should use some template engines like EJS or Pug to render your HTML page with messages or the user will see nothing
res.sendFile(__dirname + '/index.html');
});
app.get('/msg', function(){
msg.push(req.query.msgContent);
res.redirect("/");
});
app.listen(3000, function(){
console.log("Server is running on port " + 3000);
});
&#13;
上面的代码将按原样运行,但是您在客户端看不到任何内容,因为您没有呈现(或将msg数组发送到客户端脚本以嵌入它)。我只是想让你明白,不要给你实现你的想法
我希望这对你有所帮助。