01-从零入门教程

知识库
知识库文档
/tech-stacks/nodejs/tutorial/01-从零入门教程.md

文档

Node.js 入门篇:从零搭建 RESTful API

背景

Node.js 是最流行的后端 JavaScript 运行时。本教程带你从零搭建一个完整的 RESTful API 服务,涵盖路由、中间件、数据库操作。

核心概念

1. 模块系统

Node.js 使用 CommonJS(require / module.exports),也支持 ES Modules(import / export,需 .mjspackage.json"type":"module")。

// CommonJS
const express = require('express');
module.exports = myFunction;

// ES Modules
import express from 'express';
export default myFunction;

2. 事件循环(Event Loop)

Node.js 单线程通过事件循环处理异步操作。理解宏任务(setTimeout)和微任务(Promise)的执行顺序是调试的关键。

3. 中间件模式

Express/Koa 的核心思想:请求依次经过多个中间件,每个中间件可:

  • 执行代码
  • 修改 req/res 对象
  • 结束请求(res.send()
  • 调用下一个中间件(next()

分步操作

第一步:初始化项目

mkdir my-api &;& cd my-api
npm init -y
npm install express cors morgan
npm install -D nodemon

第二步:基础服务器

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.use(express.json());
app.listen(PORT, () => console.log(`Server on port ${PORT}`));

第三步:路由与控制器分离

src/
  routes/
    users.js
  controllers/
    usersController.js
  models/
    user.js
  app.js

第四步:集成数据库(SQLite)

npm install better-sqlite3
const Database = require('better-sqlite3');
const db = new Database('app.db');
db.exec(`CREATE TABLE IF NOT EXISTS users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  email TEXT UNIQUE NOT NULL
)`);

第五步:错误处理中间件

// 统一错误处理 — 放在所有路由之后
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ error: 'Internal Server Error' });
});

项目最终结构

my-api/
├── package.json
├── src/
│   ├── app.js          # Express 应用入口
│   ├── db.js           # 数据库连接
│   ├── routes/
│   │   └── users.js    # 用户路由
│   ├── controllers/
│   │   └── usersController.js
│   └── middleware/
│       └── errorHandler.js
└── app.db              # SQLite 数据文件

思考题

  1. 如果 10,000 个请求同时到达,Node.js 单线程如何处理?
  2. 中间件 app.use() 的顺序为什么重要?如果错误处理中间件放在路由之前会怎样?
  3. CommonJS 和 ES Modules 在循环依赖处理上有何不同?

信息

路径
/tech-stacks/nodejs/tutorial/01-从零入门教程.md
更新时间
2026/5/30