跳到主要内容

Node.js 完整教程(新手向)

阅读需 3 分钟

本教程面向零基础或刚接触 Node.js 的开发者,按由浅入深的顺序讲解所有主要知识点。建议按章节顺序阅读。


一、Node.js 简介

Node.js 是什么?

Node.js 是一个让 JavaScript 在服务器端运行的运行时环境。它解决了浏览器只能运行 JS 的限制,让你可以用 JS 写:

  • HTTP 接口服务
  • 命令行工具
  • 数据处理脚本

Node 与浏览器的主要区别

  • API 不一样(浏览器有 DOM,Node 有文件系统/网络等)
  • 运行模型不同(Node 是服务器侧环境)
  • 模块系统不同(CommonJS / ESM)

二、环境准备与 npm

安装 Node.js

  • 建议使用 LTS 版本
  • 可使用 nvm 管理多个版本(可选)

确认版本:

node -v
npm -v

初始化项目

mkdir my-node-app
cd my-node-app
npm init -y

package.json 基本字段

  • name / version
  • main(入口)
  • scripts(一键执行脚本)

例如加入开发脚本:

{
"scripts": {
"dev": "node src/server.js"
}
}

三、模块系统(CommonJS / ESM)

CommonJS:require

// src/math.cjs
function add(a, b) {
return a + b
}

module.exports = { add }
// src/main.cjs
const { add } = require('./math.cjs')
console.log(add(1, 2))

ESM:import

// src/math.mjs
export function add(a, b) {
return a + b
}
// src/main.mjs
import { add } from './math.mjs'
console.log(add(1, 2))

建议你在新项目中统一一种模块方式(ESM 更现代),并结合团队约定。


四、异步与事件循环

Promise / async-await

async function main() {
const res = await Promise.resolve({ ok: true })
console.log(res.ok)
}

main()

错误处理

async function run() {
try {
throw new Error('boom')
} catch (e) {
console.error('捕获错误:', e.message)
}
}

五、HTTP 服务示例(原生)

创建 src/server.js

const http = require('http')

const server = http.createServer((req, res) => {
if (req.url === '/health') {
res.setHeader('Content-Type', 'application/json; charset=utf-8')
res.end(JSON.stringify({ ok: true }))
return
}

res.statusCode = 404
res.end('Not Found')
})

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

启动:

node src/server.js

访问:http://localhost:3000/health


六、使用 Express 构建 API

安装

npm i express

简单路由

创建 src/app.js

const express = require('express')

const app = express()
app.use(express.json())

app.get('/health', (_req, res) => {
res.json({ ok: true })
})

app.post('/echo', (req, res) => {
res.json({ received: req.body })
})

app.listen(3000, () => {
console.log('express running at http://localhost:3000')
})

启动:

node src/app.js

七、数据访问(入门思路)

新手建议先把“接口层”和“数据层”分开。你可以从简单存储开始,例如:

  • 内存对象(原型期)
  • JSON 文件(演示用)

等接口逻辑稳定后再替换为数据库(如 PostgreSQL / MySQL)。


八、日志与错误处理

统一错误返回

Express 可以通过中间件做统一处理:

app.use((err, _req, res, _next) => {
console.error(err)
res.status(500).json({ message: 'internal error' })
})

日志建议

  • 开发期:console.log 够用
  • 生产期:用成熟日志库(如 pino/winston)更可观测

九、测试与调试

Jest 示例(单元测试)

npm i -D jest

package.json 添加:

{
"scripts": {
"test": "jest"
}
}

写测试:

function add(a, b) {
return a + b
}

test('add', () => {
expect(add(1, 2)).toBe(3)
})

调试

  • 使用断点调试(IDE)
  • 关键函数先写日志,再逐步定位问题

十、部署与小结

部署常见方式

  • 静态站点不适用后端部署
  • 后端服务通常使用:
    • 进程管理:PM2
    • 容器:Docker
    • 平台:Vercel/Render/Fly.io 等(取决于你的项目形态)

小结

  • Node:用 JS 写后端服务
  • npm:管理依赖与脚本
  • 模块:CommonJS / ESM 二选一并统一
  • 异步:Promise 与 async/await
  • API:原生 http 与 Express 入门
  • 质量:Jest 测试与统一错误处理

十一、学习路径小结

  1. 安装 Node 并完成 npm 项目初始化
  2. 理解模块系统(require/import)
  3. 写几个 async/await 的函数并练习错误捕获
  4. 用原生 http 实现 /health
  5. 用 Express 做一个最小 API(health + echo)
  6. 加上至少 1-2 个 Jest 单测,再考虑部署

遇到问题可查阅 Node.js 官方文档 与社区示例。

Loading Comments...