首页 > 精选知识 >

问 node.js 教程 入门到实战

2026-11-09 21:35:42
最佳答案

答

node.js 是基于 chrome v8 引擎开发的跨平台 javascript 运行环境,它打破了 javascript 只能在浏览器里面运行的限制,让 javascript 可以脱离浏览器,在服务器端处理网络请求 文件读写 数据库交互等后端任务,它采用事件驱动非阻塞 io 的核心模型,单线程运行但是不会因为 io 等待卡住主线程,非常适合开发高并发的 web 接口 实时通讯应用 命令行工具 前端工程化项目,现在前端工程化体系里面的 webpack vite npm pnpm 底层都依赖 node.js,学习 node.js 不只是学后端开发,也是吃透前端工具链的基础,学习的时候要理解它和浏览器 js 的区别,掌握模块机制 异步编程 内置模块 包管理 服务开发整套流程,循序渐进从环境搭建到写接口项目,就能完整掌握 node.js 核心能力。

一 基础认知

项目说明
运行内核chrome v8 负责执行 js 代码 底层还有 libuv 处理跨平台 io 事件循环
编程模型事件驱动 非阻塞 io 单主线程 后台线程池处理耗时 io 任务
适用场景web api 服务 websocket 实时聊天 爬虫 构建工具 自动化脚本 桌面应用后端
不适合场景cpu 密集型大量计算任务 会长期占用主线程造成阻塞
语言使用 javascript 或者 typescript 开发

二 环境安装与版本管理

安装方式

1 官网下载安装包,分长期支持版 lts 和最新版 current,学习推荐优先选择 lts 稳定版本,生产项目也统一使用 lts

2 使用版本管理工具 nvm,这个工具非常推荐,可以在同一台电脑切换多个 node.js 版本,解决不同项目版本冲突问题

验证安装

打开终端输入 node -v 查看版本号,输入 npm -v 查看自带包管理器版本,能正常输出版本数字就代表安装成功

三 核心基础知识点

1 CommonJS 模块机制

node.js 默认早期模块规范是 CommonJS,每个 js 文件就是独立模块,模块内部变量默认对外隔离

require 用来引入其他模块

module.exports 或者 exports 用来导出模块内容

核心要点 模块第一次加载会缓存,重复 require 不会重复执行模块代码

2 ESModule 模块

新版 node.js 支持 es 模块也就是 import export,启用方式两种,第一种 package.json 里面设置 type 为 module,第二种文件后缀改成 mjs,现在新项目越来越多使用 es 模块写法

3 内置核心模块

模块名主要功能
fs文件系统 读写文件 创建目录 删除文件
path路径处理 拼接路径 解析路径 兼容 windows 和 linux 斜杠差异
http创建 http 服务器 接收请求 返回响应 手写 web 服务核心模块
url解析 url 地址 获取参数 路径信息
events事件触发器 实现自定义事件订阅发布
stream流处理 大文件分块读写 避免一次性加载全部内容占用内存

4 异步编程

node.js 大量 api 都是异步回调风格,后续演进支持 promise 和 async await,学习重点要理解回调地狱,然后掌握 promise 封装,最后熟练使用 async await 写同步外观的异步代码,理解事件循环 event loop 执行顺序,宏任务微任务,这是 node.js 高频重点考点

四 npm 包管理

npm 是 node.js 自带的包管理工具

初始化项目 在项目文件夹终端执行 npm init 生成 package.json 文件

安装依赖 npm install 包名 生产依赖 写入 dependencies

开发依赖 npm install 包名 保存到 devDependencies 比如构建工具 测试工具

全局安装 npm install 包名 全局 用来安装命令行工具

卸载 更新 查看依赖列表 这些都是日常必备操作

补充 现在很多开发者改用 pnpm,速度更快磁盘占用更小,底层依旧兼容 node.js 生态

五 实战 创建第一个 http 服务

1 新建 js 文件 引入 http 内置模块

2 调用 http.createServer 创建服务,回调函数接收 req 请求对象 res 响应对象

3 监听端口 比如 3000,终端运行 node 文件名

4 浏览器访问localhost 3000 就能看到返回内容

这个项目可以继续扩展,区分请求方法 get post,解析请求体,路由分发,返回 json 数据,升级成简易后端接口服务

六 主流框架进阶

原生 http 写服务代码繁琐,实际开发使用框架

express 最经典轻量框架 上手简单 中间件机制 生态成熟

koa 由 express 原作者开发 基于 async await 更精简 洋葱模型中间件

nestjs 企业级框架 类似 angular 架构 原生支持 typescript 适合大型复杂后端项目

七 进阶重点内容

1 错误处理 捕获异步异常 进程异常退出处理

2 数据库连接 mysql mongodb redis 驱动包使用

3 鉴权 token session 权限中间件

4 部署 把 node.js 项目放到服务器,使用 pm2 进程守护,防止进程意外退出

5 性能优化 阻塞代码排查 缓存策略 集群 cluster 模块利用多核 cpu

【常见问题】

问题 1 node.js 是不是后端语言

回答 1 node.js 本身不是编程语言,它是 javascript 运行环境,只是可以用 javascript 在 node.js 上面开发后端服务,很多人会误把它当成独立后端语言。

问题 2 node.js 单线程为什么可以处理高并发

回答 1 node.js 主线程单线程,但是 io 操作交给 libuv 线程池和操作系统内核处理,配合事件循环非阻塞模型,主线程不用等待 io 完成,可以继续处理其他请求,所以可以支撑高并发。

问题 3 node.js 项目里面 CommonJS 和 ESModule 能不能混用

回答 1 node.js 里面 CommonJS 和 ESModule 不推荐直接混用,会出现导入导出语法报错,新项目尽量统一选择一种模块规范,必要时使用专门转换方案处理兼容。

问题 4 学习 node.js 一定要先精通前端吗

回答 1 学习 node.js 不需要精通前端页面开发,只需要掌握 javascript 基础语法就可以入门,但是如果本身有前端基础,理解 node.js 会更快,因为底层语言都是 javascript。

【免责申明】

本 node.js 教程基于当前主流稳定版本整理,node.js 版本迭代较快,部分 api 配置规则会随版本更新发生变动,内容仅作为学习参考,不代表所有版本和生产场景唯一标准方案。