第一个Node.js项目 持续更新ing
大家好,这是我第一次尝试使用Node.js开发一个小项目。目前项目还在不断更新中,非常欢迎有兴趣的朋友来帮忙测试并提出宝贵的意见。
项目地址:
项目简介:
这个项目是一个简单的待办事项(To-Do List)应用。用户可以添加、删除和查看他们的待办事项。项目主要使用了Express框架进行后端开发,并通过MongoDB存储数据。
技术栈:
- Node.js:作为服务器端的主要运行环境。
- Express:一个简洁而灵活的Node.js Web应用框架。
- MongoDB:用于存储用户的待办事项数据。
- EJS:一个简单易用的模板引擎,用于生成HTML页面。
项目结构:
todolist/
├── node_modules/
├── public/
│ ├── css/
│ ├── js/
│ └── images/
├── views/
│ ├── index.ejs
│ └── layout.ejs
├── routes/
│ ├── index.js
│ └── todo.js
├── models/
│ └── Todo.js
├── app.js
└── package.json
示例代码:
-
安装依赖 在项目根目录下运行以下命令安装所需的依赖库:
npm install express ejs mongoose body-parser
-
app.js 这是项目的入口文件,初始化Express应用并配置路由。
const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const app = express(); // 设置视图引擎为EJS app.set('view engine', 'ejs'); // 使用body-parser中间件解析请求体 app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); // 链接MongoDB数据库 mongoose.connect('mongodb://localhost:27017/todolist', { useNewUrlParser: true, useUnifiedTopology: true }); // 引入路由 const indexRouter = require('./routes/index'); const todoRouter = require('./routes/todo'); // 使用路由 app.use('/', indexRouter); app.use('/todo', todoRouter); // 启动服务器 const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`); });
-
models/Todo.js 定义待办事项的数据模型。
const mongoose = require('mongoose'); const TodoSchema = new mongoose.Schema({ title: { type: String, required: true }, completed: { type: Boolean, default: false } }); module.exports = mongoose.model('Todo', TodoSchema);
-
routes/todo.js 定义处理待办事项的路由。
const express = require('express'); const router = express.Router(); const Todo = require('../models/Todo'); // 添加新的待办事项 router.post('/', async (req, res) => { const newTodo = new Todo(req.body); await newTodo.save(); res.redirect('/todo'); }); // 获取所有待办事项 router.get('/', async (req, res) => { const todos = await Todo.find(); res.render('index', { todos }); }); // 删除待办事项 router.delete('/:id', async (req, res) => { await Todo.findByIdAndDelete(req.params.id); res.redirect('/todo'); }); module.exports = router;
-
views/index.ejs 渲染待办事项列表。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>To-Do List</title> </head> <body> <h1>To-Do List</h1> <form action="/todo" method="POST"> <input type="text" name="title" placeholder="Add a new task" required> <button type="submit">Add</button> </form> <ul> <% todos.forEach(todo => { %> <li> <%= todo.title %> <form action="/todo/<%= todo._id %>" method="DELETE" style="display:inline;"> <button type="submit">Delete</button> </form> </li> <% }) %> </ul> </body> </html>
希望这个简短的介绍能够帮助你了解这个项目的整体结构和实现方式。如果你有任何问题或建议,请随时联系我!
速度挺快
nginx反代有点慢 求不需要端口直接绑定域名的方法 80除外~
我这里感觉有点慢
你部署到哪里了?
当然可以!以下是一个简单的示例,展示如何创建一个基本的 Node.js 应用程序,并提供一些解释。
示例代码
假设你想创建一个简单的 Web 服务器,可以使用 http
模块来实现。以下是示例代码:
// 引入 http 模块
const http = require('http');
// 创建一个 HTTP 服务器
const server = http.createServer((req, res) => {
// 设置响应头,告知浏览器返回的是 HTML 文档
res.writeHead(200, {'Content-Type': 'text/html'});
// 发送响应数据
res.end('<h1>Hello, Welcome to My First Node.js Project!</h1>');
});
// 监听端口 3000
server.listen(3000, () => {
console.log('Server is running at http://localhost:3000/');
});
解释
-
引入 http 模块:
- 使用
require
引入 Node.js 内置的http
模块,该模块用于创建 HTTP 服务器。
- 使用
-
创建 HTTP 服务器:
- 调用
http.createServer
方法创建一个 HTTP 服务器,并传入一个回调函数作为参数。当接收到客户端请求时,这个回调函数会被调用。 - 回调函数接收两个参数
req
和res
,分别代表请求对象和响应对象。 - 在回调函数中,我们设置响应头,告知浏览器返回的是 HTML 文档,然后通过
res.end
方法发送响应数据。
- 调用
-
监听端口:
- 调用
server.listen
方法让服务器开始监听指定的端口(这里为 3000)。 - 当服务器成功启动后,会在控制台输出一条消息,告知用户服务器正在运行。
- 调用
运行代码
将上述代码保存为 server.js
文件,然后在终端中运行以下命令启动服务器:
node server.js
打开浏览器,访问 http://localhost:3000/
,你应该会看到一个简单的页面,显示 “Hello, Welcome to My First Node.js Project!”。
希望这个示例对你有所帮助!如果你有任何问题或需要进一步的功能扩展,请随时告诉我。