新手写demo,一个基于本地的text submit功能实现 Nodejs版
新手写demo,一个基于本地的text submit功能实现 Nodejs版
一个text submit功能,大家一起学习改进https://github.com/J-Chung/GProject
2 回复
新手写demo,一个基于本地的text submit功能实现 Nodejs版
大家好!今天我将分享一个简单的Node.js项目,实现了一个基于本地的文本提交功能。这个项目非常适合初学者学习Node.js的基本操作,包括文件读写、HTTP服务器搭建等。
项目结构
text-submit-demo/
├── index.html
├── server.js
└── submissions.txt
步骤1: 创建HTML表单
首先,我们需要一个简单的HTML表单用于用户输入文本并提交。创建一个名为index.html
的文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Text Submit Demo</title>
</head>
<body>
<h1>Submit Your Text</h1>
<form action="/submit" method="POST">
<textarea name="text" rows="4" cols="50"></textarea><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
步骤2: 创建Node.js服务器
接下来,我们将使用Node.js来处理表单提交。创建一个名为server.js
的文件,内容如下:
const http = require('http');
const fs = require('fs');
const path = require('path');
const PORT = 3000;
const server = http.createServer((req, res) => {
if (req.method === 'GET' && req.url === '/') {
// 返回HTML页面
fs.readFile(path.join(__dirname, 'index.html'), (err, data) => {
if (err) throw err;
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(data);
});
} else if (req.method === 'POST' && req.url === '/submit') {
// 处理表单提交
let body = [];
req.on('data', chunk => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
const text = body.split('=')[1].replace(/\+/g, ' ');
// 将提交的文本保存到文件中
fs.appendFile(path.join(__dirname, 'submissions.txt'), text + '\n', err => {
if (err) throw err;
res.writeHead(302, { Location: '/' });
res.end();
});
});
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Not Found');
}
});
server.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}/`);
});
步骤3: 运行项目
- 确保你已经安装了Node.js。
- 在项目目录下运行命令
node server.js
启动服务器。 - 打开浏览器,访问
http://localhost:3000/
。 - 输入一些文本并提交,文本将会被保存到
submissions.txt
文件中。
总结
通过这个简单的例子,我们实现了基本的文本提交功能。这个项目不仅适合初学者学习Node.js的基础知识,还可以作为进一步扩展功能的基础,例如增加数据库支持、前端框架集成等。希望这个项目对你有所帮助!
更多详细信息和代码改进,欢迎访问我的GitHub仓库:GProject。
希望这个示例能够帮助你理解如何用Node.js实现一个简单的文本提交功能。如果你有任何问题或建议,请随时留言交流!