Node.js快速总结

发布于:2025-02-26 ⋅ 阅读:(19) ⋅ 点赞:(0)

理解 Node.js
● 是一个基于 Chrome V8 引擎的 JavaScript 运行时。
● 非阻塞、事件驱动、异步 I/O,适合高并发场景。
✅ 核心概念
● 事件循环 (Event Loop): Node.js 的异步机制。
● 模块系统: 使用 require() 引入模块,module.exports 导出模块。
● 文件系统 (fs): 处理文件读写。
● HTTP 模块: 构建 Web 服务器。
创建 HTTP 服务器

const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello, World!\n');
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});
 Express  

✅ 简洁易用: 代码结构简明,易于上手。
✅ 路由系统: 提供灵活的 URL 路由处理。
✅ 中间件机制: 通过中间件实现请求和响应的处理流程。
✅ 模板引擎: 支持 EJS、Pug、Handlebars 等模板引擎。
✅ 静态文件: 可以轻松托管 CSS、JS、图片等静态资源。
✅ 跨平台: 与各种数据库(MongoDB、MySQL 等)无缝集成。

  1. Express.js 环境配置
//初始化项目
npm init -y
//安装 Express.js
npm install express

2.Hello World 示例
创建 app.js 文件,编写以下代码:

const express = require('express');
const app = express();

// 定义根路由
app.get('/', (req, res) => {
    res.send('Hello, Express.js!');
});

// 启动服务器,监听 3000 端口
app.listen(3000, () => {
    console.log('Server running at http://localhost:3000');
});
 运行项目:  
node app.js
  1. 中间件 (Middleware)
    中间件 是处理请求和响应的函数链,可以进行日志记录、身份验证、错误处理等。
// 日志中间件
app.use((req, res, next) => {
    console.log(`${req.method} ${req.url}`);
    next(); // 继续执行下一个中间件或路由
});

// 处理 JSON 请求
app.use(express.json());

// 处理表单数据
app.use(express.urlencoded({ extended: true }));
  1. 路由系统 (Routing)
    使用 .get()、.post()、.put()、.delete() 处理不同请求方法:
// GET 请求
app.get('/users', (req, res) => {
    res.send('获取所有用户');
});

// POST 请求
app.post('/users', (req, res) => {
    res.send('创建新用户');
});

// 动态路由参数
app.get('/users/:id', (req, res) => {
    const userId = req.params.id;
    res.send(`获取用户 ID: ${userId}`);
});

// 查询参数 (?name=Alice)
app.get('/search', (req, res) => {
    const name = req.query.name;
    res.send(`搜索用户: ${name}`);
});
  1. 静态文件托管
    使用 express.static() 提供静态资源服务,如 CSS、JS、图片等:
    app.use(express.static(‘public’)); // public 文件夹内的文件可直接访问
  2. Express.js 与 MongoDB 集成
    安装 MongoDB 驱动 mongoose:
npm install mongoose
 连接 MongoDB:  
const mongoose = require('mongoose');

mongoose.connect('mongodb://127.0.0.1:27017/mydb', {
    useNewUrlParser: true,
    useUnifiedTopology: true
}).then(() => console.log('MongoDB 连接成功'))
.catch(err => console.error(err));
 定义数据模型:  
const User = mongoose.model('User', {
    name: String,
    age: Number
});

// 保存数据
app.post('/add-user', async (req, res) => {
    const newUser = new User({
        name: req.body.name,
        age: req.body.age
    });
    await newUser.save();
    res.send('用户已保存');
});

// 查询数据
app.get('/users', async (req, res) => {
    const users = await User.find();
    res.json(users);
});
  1. 错误处理 (Error Handling)
// 404 错误处理
app.use((req, res, next) => {
    res.status(404).send('页面未找到');
});

// 通用错误处理
app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('服务器内部错误');
});
  1. Express 项目结构建议
my-express-app
├── node_modules
├── public
│   ├── css
│   ├── images
│   └── js
├── routes
│   ├── users.js
│   └── index.js
├── views
│   ├── index.ejs
│   └── users.ejs
├── app.js
└── package.json

将路由拆分到 routes 文件夹,便于项目维护:

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
    res.send('用户列表');
});

module.exports = router;
 app.js:  
const express = require('express');
const app = express();

const userRoutes = require('./routes/users');

// 使用路由
app.use('/users', userRoutes);

app.listen(3000, () => {
    console.log('Server running on http://localhost:3000');
});
  1. 启动与自动重启 (使用 nodemon)
//安装 nodemon:
npm install -g nodemon

//使用 nodemon 启动项目:
nodemon app.js