Node.js 后端开发入门

视频链接:BV1vVyeYMEAs
发布日期:2024-10-21
视频时长:21:51
播放量:27.7万
所属合集:零基础AI全栈开发系列

视频概要

后端开发的第一课。使用Node.js + Express框架搭建后端服务器,创建RESTful API接口,并连接MongoDB数据库。覆盖服务端概念、Express路由、中间件、CORS跨域、Mongoose数据模型、云函数/Serverless等知识。


知识点清单

A. Node.js 基础

知识点说明重要程度
Node.js是什么基于Chrome V8引擎的JavaScript运行时,让JS可以在浏览器外运行★★★★★
为什么学Node.js前后端同一种语言,降低学习成本★★★★★
npmNode Package Manager,包管理工具★★★★★
CommonJSNode.js传统模块系统(require/module.exports)★★★★
ES Modules新一代模块系统(import/export),推荐使用★★★★
nvmNode版本管理器,方便切换不同Node版本★★★★
# 验证Node.js安装
node -v    # 查看版本
npm -v     # 查看npm版本

# 初始化项目
mkdir my-server
cd my-server
npm init -y     # 生成 package.json

# 安装Express
npm install express

# 设置国内镜像(加速下载)
npm config set registry https://registry.npmmirror.com

B. Express 框架

// index.js
const express = require('express');
const app = express();
const port = 3000;

// 中间件:解析JSON请求体
app.use(express.json());

// 中间件:跨域支持(CORS)
app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
});

// 路由:GET 获取列表
app.get('/get_list', async (req, res) => {
    try {
        const todos = await Todo.find();
        res.json({ code: 200, data: todos });
    } catch (error) {
        res.status(500).json({ code: 500, message: '服务器错误' });
    }
});

// 路由:POST 添加数据
app.post('/add', async (req, res) => {
    const { name } = req.body;
    const todo = new Todo({ name, completed: false });
    await todo.save();
    res.json({ code: 200, message: "添加成功" });
});

// 路由:PUT 更新数据
app.put('/update_todo', async (req, res) => {
    const { id, completed } = req.body;
    await Todo.findByIdAndUpdate(id, { completed });
    res.json({ code: 200, message: "更新成功" });
});

// 路由:DELETE 删除数据
app.delete('/del_todo', async (req, res) => {
    await Todo.findByIdAndDelete(req.body.id);
    res.json({ code: 200, message: "删除成功" });
});

// 启动服务器
app.listen(port, () => {
    console.log(`服务器运行在 http://localhost:${port}`);
});

C. Express核心概念

概念说明示例
路由(Routing)URL路径与处理函数的映射app.get('/users', handler)
中间件(Middleware)请求处理管道中的函数,可在路由前后执行app.use(express.json())
req(请求对象)包含客户端发来的数据req.body(POST数据), req.params(URL参数), req.query(查询参数)
res(响应对象)用于向客户端返回数据res.json(), res.send(), res.status()
listen服务器绑定端口等待请求app.listen(3000)
next()中间件中调用,传递到下一个处理函数next()

D. 项目目录结构

my-server/
├── package.json          # 项目配置和依赖列表
├── package-lock.json     # 依赖锁定文件
├── node_modules/         # 依赖包(npm install自动生成)
├── index.js              # 入口文件(服务器启动)
├── routes/               # 路由目录
│   └── api.js            # API路由定义
├── models/               # 数据模型目录
│   └── todo.js           # Todo数据模型
└── config/               # 配置文件目录
    └── db.js             # 数据库连接配置

E. MongoDB + Mongoose

// 安装: npm install mongoose
const mongoose = require('mongoose');

// 连接数据库
mongoose.connect('mongodb://localhost:27017/mydb');

// 定义数据模型(Schema)
const todoSchema = new mongoose.Schema({
    title: String,
    completed: Boolean,
    createdAt: { type: Date, default: Date.now }
});

const Todo = mongoose.model('Todo', todoSchema);

// CRUD 操作
// 创建
const newTodo = new Todo({ title: "学习Node.js", completed: false });
await newTodo.save();

// 查询所有
const todos = await Todo.find();

// 条件查询
const completed = await Todo.find({ completed: true });

// 按ID查询
const todo = await Todo.findById("some_id");

// 更新
await Todo.findByIdAndUpdate("some_id", { completed: true });

// 删除
await Todo.findByIdAndDelete("some_id");

F. MongoDB核心概念

知识点说明SQL对应
数据库(Database)数据的逻辑容器数据库
集合(Collection)文档的集合表(Table)
文档(Document)单条数据记录,JSON格式行(Row)
字段(Field)文档中的键值对列(Column)
_id自动生成的唯一标识主键(Primary Key)
MongooseNode.js的MongoDB ODM工具ORM

G. 云函数/Serverless

知识点说明重要程度
Serverless无需管理服务器的后端方案★★★
云函数上传代码,平台自动运行★★★
按需计费用的时候才启动,不用不收费★★★
与传统服务器区别Serverless按调用计费,传统服务器按时间计费★★★
注意:Serverless并不是真的没有服务器,而是开发者不需要管理服务器。

学习路径

第1天           第2天              第3天+
http模块+npm  →  Express路由+中间件 →  连接MongoDB+CRUD API
(跑起服务)       (Web框架)            (完整后端)

阶段目标对应部分检验标准
1. 环境Node安装、npm、第一个http服务前半部分浏览器访问到 Hello World
2. Express路由、中间件、静态资源中部写出 /api/users 接口
3. 跨域CORS 中间件中部前端页面能调通后端接口
4. 数据库MongoDB 连接与增删改查后半部分接口数据落库成功
5. 实战完整 REST API全部提供前端可用的增删改查接口

哔哩哔哩视频教程推荐

本文是B站「零基础AI全栈开发系列」的配套图文笔记:
搜索关键词备选:Node.js 后端开发 入门 教程


学习建议

  • 本集是从"前端开发者"到"全栈开发者"的跨越,重点理解Express路由和中间件
  • CORS跨域是新手最常遇到的问题,中间件设置务必加上
  • MongoDB连接串中的 mydb 可以自定义,数据库不存在时会自动创建
  • 建议在Sealos上创建云数据库,跟着练习
返回首页