{"id":19978003,"url":"https://github.com/tuture-dev/nodejs-roadmap","last_synced_at":"2025-04-09T18:17:49.155Z","repository":{"id":39366021,"uuid":"226506986","full_name":"tuture-dev/nodejs-roadmap","owner":"tuture-dev","description":"【🔥持续更新中】Node.js 实战学习路线","archived":false,"fork":false,"pushed_at":"2021-12-31T15:33:53.000Z","size":88,"stargazers_count":313,"open_issues_count":1,"forks_count":35,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-09T18:17:44.956Z","etag":null,"topics":["learning-by-doing","nodejs","tutorials"],"latest_commit_sha":null,"homepage":"https://tuture.co/roadmaps/node","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tuture-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-07T12:15:32.000Z","updated_at":"2025-04-08T06:25:34.000Z","dependencies_parsed_at":"2022-09-20T03:20:08.248Z","dependency_job_id":null,"html_url":"https://github.com/tuture-dev/nodejs-roadmap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuture-dev%2Fnodejs-roadmap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuture-dev%2Fnodejs-roadmap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuture-dev%2Fnodejs-roadmap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuture-dev%2Fnodejs-roadmap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tuture-dev","download_url":"https://codeload.github.com/tuture-dev/nodejs-roadmap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248085321,"owners_count":21045139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["learning-by-doing","nodejs","tutorials"],"created_at":"2024-11-13T03:30:02.077Z","updated_at":"2025-04-09T18:17:49.136Z","avatar_url":"https://github.com/tuture-dev.png","language":null,"readme":"\u003cdiv align=\"center\" id=\"top\"\u003e\n  \u003cimg style=\"display: inline;\" width=\"100%\" src=\"./assets/images/Logo.svg\" /\u003e\n  \u003ch1\u003e\n    Node.js 后端工程师学习路径\n  \u003c/h1\u003e\n  \u003cp\u003e\n    Node.js 使用了全球最流行的 JavaScript 语言进行开发，并基于性能强悍的 V8 引擎，已经成为目前最热门的服务器开发平台之一。无论你是已经熟悉 JavaScript 的前端工程师，还是其他后端（例如 Java）工程师，抑或是编程新手，Node.js 都有十足的理由值得你学习和探索。\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## 目录 \u003c!-- omit in toc --\u003e\n\n- [入门](#%e5%85%a5%e9%97%a8)\n  - [Node 基础](#node-%e5%9f%ba%e7%a1%80)\n    - [知识点](#%e7%9f%a5%e8%af%86%e7%82%b9)\n    - [实战教程](#%e5%ae%9e%e6%88%98%e6%95%99%e7%a8%8b)\n- [进阶](#%e8%bf%9b%e9%98%b6)\n  - [异步编程](#%e5%bc%82%e6%ad%a5%e7%bc%96%e7%a8%8b)\n    - [知识点](#%e7%9f%a5%e8%af%86%e7%82%b9-1)\n    - [实战教程](#%e5%ae%9e%e6%88%98%e6%95%99%e7%a8%8b-1)\n  - [Web 后端开发](#web-%e5%90%8e%e7%ab%af%e5%bc%80%e5%8f%91)\n    - [知识点](#%e7%9f%a5%e8%af%86%e7%82%b9-2)\n    - [实战教程](#%e5%ae%9e%e6%88%98%e6%95%99%e7%a8%8b-2)\n  - [自动化测试](#%e8%87%aa%e5%8a%a8%e5%8c%96%e6%b5%8b%e8%af%95)\n    - [知识点](#%e7%9f%a5%e8%af%86%e7%82%b9-3)\n    - [实战教程](#%e5%ae%9e%e6%88%98%e6%95%99%e7%a8%8b-3)\n  - [实时应用开发](#%e5%ae%9e%e6%97%b6%e5%ba%94%e7%94%a8%e5%bc%80%e5%8f%91)\n  - [应用部署](#%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2)\n- [前沿](#%e5%89%8d%e6%b2%bf)\n  - [GraphQL 服务开发](#graphql-%e6%9c%8d%e5%8a%a1%e5%bc%80%e5%8f%91)\n- [参考资源](#%e5%8f%82%e8%80%83%e8%b5%84%e6%ba%90)\n  - [JavaScript 语言基础](#javascript-%e8%af%ad%e8%a8%80%e5%9f%ba%e7%a1%80)\n  - [HTTP 协议基础](#http-%e5%8d%8f%e8%ae%ae%e5%9f%ba%e7%a1%80)\n  - [Node.js 理论](#nodejs-%e7%90%86%e8%ae%ba)\n  - [Node.js 应用](#nodejs-%e5%ba%94%e7%94%a8)\n\n## 入门\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" src=\"./assets/images/nodejs.svg\" /\u003e\n\n### Node 基础\n\u003c/div\u003e\n\n\u003e Node（或者说 Node.js，两者是等价的）是 JavaScript 的一种运行环境，是一个基于 Chrome V8 引擎建立的一个平台。由于采用了事件驱动、非阻塞 I/O 的模型，Node 能够成为了构建轻量且高效的 Web 应用的理想选择。万丈高楼平地起，掌握如何安装、模块机制、npm 工具链等基础知识对接下来 Node 的学习大有裨益。\n\n#### 知识点\n\n1. 安装\n    - 各平台安装包\n    - nvm\n2. 编辑器环境安装\n    - VSCode\n    - ESLint\n    - Prettier\n3. 模块机制\n    - CommonJS 规范\n    - require、module 和 exports\n4. npm\n    - 基本命令\n    - package.json\n    - 切换 npm 源\n    - npm scripts\n5. 全局对象\n    - process 对象\n    - Buffer 对象\n6. 事件\n\n#### 实战教程\n\n- ✍️《Node.js 开发环境搭建》 *🗝知识点 1、2、4*\n- ✅[《一杯茶的时间，上手 Node.js》](https://tuture.co/2019/12/03/892fa12/) *🗝知识点 3、4、5、6*\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"#top\"\u003e⬆️返回顶部\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"#top\"\u003e⬆️返回顶部\u003c/a\u003e\n\u003c/div\u003e\n\n## 进阶\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" src=\"./assets/images/promises.svg\" /\u003e\n\n### 异步编程\n\u003c/div\u003e\n\n\u003e Node.js 为异步而生，这也是它处理数据密集型实时应用（Data-intensive Real-time，DIRT）如此高效的原因。从浏览器端 JS 发源而来的事件机制与回调函数，到 ECMAScript 隆重推出的 Promise，Node.js 实现异步逻辑的方式也越来越现代化。这一节中，你将学会 Node.js 实现异步逻辑的各种方式，并且学会通过性能测试的方式，让你的 Node 代码更加高效。\n\n#### 知识点\n\n1. 异步 I/O 与原生事件循环\n2. 回调函数，以及 async 库的优化\n3. Promise 与 async/await\n4. 性能测试与调优\n\n#### 实战教程\n\n- ✍️《Node.js 异步编程指北》 🗝知识点 1、2、3、4\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"#top\"\u003e⬆️返回顶部\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr\u003e\n\u003cimg style=\"display: inline; margin-right: 15px;\" width=\"100\" height=\"100\" src=\"./assets/images/express.svg\" /\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" src=\"./assets/images/koa.svg\" /\u003e\n\n### Web 后端开发\n\u003c/div\u003e\n\n\u003e 毫不夸张的说，Node 就是为 Web 而生的平台，其核心是由 Ryan Dahl 用 1500 行经过高度优化的 C 代码实现的流式 HTTP 解析器。如何用 Node 构建既健壮又高效的 Web 服务器应用，几乎是每个 Node 程序员的必修课。后端开发常用框架包括 Express 和 Koa，可任选其一进行学习。\n\n#### 知识点\n\n1. 路由的概念与定义\n    - 路由的组成：HTTP 方法 + URI\n    - 嵌套路由的实现\n    - 动态路由的实现\n2. 中间件\n    - 中间件的概念\n    - 使用第三方中间件\n    - 编写自定义中间件\n3. 模板引擎的使用\n    - 模板引擎的语法（可选用 [Handlebars](https://handlebarsjs.com/)、[Pug](https://pug.bootcss.com/api/getting-started.html) 等）\n    - 在服务器框架中接入模板引擎，渲染页面\n4. RESTful API 的开发\n    - 了解 HTTP 规范\n    - 了解最常见的四个方法（GET、POST、PUT、DELETE）的含义\n    - 在框架中响应不同的 HTTP 方法\n5. 关系型数据库的接入（例如 MySQL）\n    - 连接数据库，包括鉴权与重连机制\n    - 定义数据模型\n    - 实现增删改查\n6. 文档型数据库的接入（例如 MongoDB）\n    - 连接数据库，包括鉴权与重连机制\n    - 定义数据模型\n    - 实现增删改查\n7. 集成 Redis 数据库\n\n#### 实战教程\n\n- ✅[《一杯茶的时间，上手 Express 框架开发》](https://tuture.co/2019/11/26/cd5b993/) 🗝知识点 1, 2, 3\n- ✍️《一杯茶的时间，上手 Koa 框架开发》 🗝知识点 1, 2, 3\n- ✅[《从零开始用 Express + MongoDB 搭建图片分享社区（一）》](https://tuture.co/2019/10/16/a0531f0/) 🗝知识点 1, 2, 3\n- ✅[《从零开始用 Express + MongoDB 搭建图片分享社区（二）》](https://tuture.co/2019/10/16/29f41c0/) 🗝知识点 1, 2, 3, 6\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"#top\"\u003e⬆️返回顶部\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" src=\"./assets/images/mocha.svg\" /\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" src=\"./assets/images/chai.svg\" /\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" src=\"./assets/images/jest.svg\" /\u003e\n\n### 自动化测试\n\u003c/div\u003e\n\n\u003e 自动化测试往往被忽视，但却是保障软件质量的关键一环。自动化测试解决了手工测试的繁琐、枯燥、易错的问题，让开发者能够专注于写出高质量的软件，同时也大大改善了团队协作的流程。自动化测试主要包括单元测试和集成测试（或称功能测试、验收测试等等），同时也涵盖了测试覆盖率、持续集成等知识点。\n\n#### 知识点\n\n1. 单元测试\n    - 测试驱动开发（TDD）的概念\n    - 行为驱动开发（BDD）的概念\n    - 了解常用的测试框架（[Mocha](https://mochajs.cn/)、[Jest](https://jestjs.io/zh-Hans/)、[Jasmine](http://jasmine.github.io/) 等等）\n    - 了解常用的断言库（内置 assert 模块、[Chai](https://github.com/chaijs/chai)、[unit.js](https://www.npmjs.com/package/unit.js) 等等）\n    - 利用测试框架和断言库为 Node 模块编写单元测试\n2. 集成测试\n    - 了解浏览器自动化测试\n    - 利用 [Karma](https://github.com/karma-runner/karma) 或 [Testcafe](https://devexpress.github.io/testcafe/) 进行集成测试\n3. 测试覆盖率\n    - 了解测试覆盖率的意义\n    - 通过 [Codecov](https://codecov.io/)、[Jest](https://jestjs.io/zh-Hans/)（自带）或 [Istanbul](https://github.com/gotwarlost/istanbul) 生成测试覆盖率报告\n4. 持续集成\n    - 了解持续集成的意义\n    - 了解常见的持续集成工具/平台（例如 [Travis CI](https://travis-ci.org/)、[Circle CI](https://circleci.com/) 或 [GitHub Action](https://help.github.com/en/actions)）\n    - 配置持续集成，接入项目开发流程\n\n#### 实战教程\n\n- ✍️《一杯茶的时间，上手 Mocha 单元测试》 🗝知识点 1, 4\n- ✍️《一杯茶的时间，上手 Karma 浏览器测试》 🗝知识点 2, 4\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"#top\"\u003e⬆️返回顶部\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003cimg width=\"100\" height=\"100\" src=\"./assets/images/socket.io.svg\" /\u003e\n\n### 实时应用开发\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e🛠筹备中，敬请期待\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"#top\"\u003e⬆️返回顶部\u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" style=\"padding: 5px\" src=\"./assets/images/pm2.svg\" /\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" style=\"padding: 5px\" src=\"./assets/images/docker-icon.svg\" /\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" src=\"./assets/images/kubernetes.svg\" /\u003e\n\n### 应用部署\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e🛠筹备中，敬请期待\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"#top\"\u003e⬆️返回顶部\u003c/a\u003e\n\u003c/div\u003e\n\n## 前沿\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" style=\"padding: 5px\" src=\"./assets/images/graphql.svg\" /\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" style=\"padding: 5px\" src=\"./assets/images/prisma.svg\" /\u003e\n\u003cimg style=\"display: inline;\" width=\"100\" height=\"100\" src=\"./assets/images/apollostack.svg\" /\u003e\n\n### GraphQL 服务开发\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e🛠筹备中，敬请期待\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"#top\"\u003e⬆️返回顶部\u003c/a\u003e\n\u003c/div\u003e\n\n## 参考资源\n\n### JavaScript 语言基础\n\n🖥网络资源：\n\n- [现代 JavaScript 教程](https://zh.javascript.info/)：遵循最新的 JavaScript 语言标准，由浅入深，足够详细，插图精美丰富，还涉及了浏览器相关知识，适合刚了解 HTML 和 CSS 基础的同学学习，也适合老司机查阅和复习。\n\n- [MDN - JavaScript 基础](https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web/JavaScript_basics)：权威的 JavaScript 文档，内容十分详细，涉及到前端开发的方方面面，适合查阅。\n\n- [W3schools JavaScript 教程](https://www.quanzhanketang.com/js/default.html)（英文）：W3School 国内镜像站，内容简洁明了，包含大量可运行的实际代码片段，推荐零基础且英语较好的同学学习。\n\n- [JavaScript Promise迷你书](http://liubin.org/promises-book/)：专注于讲透 JavaScript Promise 这个知识点，强烈推荐至今对 Promise 似懂非懂的同学学习。\n\n📚书籍推荐：\n\n- [《ECMAScript 6 入门》- 阮一峰](http://es6.ruanyifeng.com/)：阮一峰老师开源的 JavaScript 语言教程，重在介绍 ECMAScript 6（简称 ES6）引入的新语法特性，推荐想要了解 ES6 新特性的同学学习。\n\n### HTTP 协议基础\n\n- [MDN - HTTP 概述](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Overview)：权威的 HTTP 协议概述。\n\n- [十分钟搞懂 HTTP 和 HTTPS 协议](https://zhuanlan.zhihu.com/p/72616216)：在让你快速了解 HTTP 协议的同时，也了解 HTTPS 出现的背景和意义。\n\n- [阮一峰 - HTTP 协议入门](http://www.ruanyifeng.com/blog/2016/08/http.html)：阮一峰老师的 HTTP 协议介绍资料，具有不错的参考价值。\n\n### Node.js 理论\n\n🖥网络资源：\n\n- [狼叔：如何正确的学习Node.js](https://i5ting.github.io/How-to-learn-node-correctly/)：讲解了 Node.js 的相关基础知识，还分享了自己的成长经历和求职指南。\n\n- [Node.js技术栈](https://www.nodejs.red/)：涵盖了 JavaScript、ES6、Node.js、数据结构与算法、数据库、微服务、DevOps 等方方面面的知识。\n\n📚书籍推荐：\n\n- [《深入浅出 Node.js》- 朴灵](https://book.douban.com/subject/25768396/)：朴灵老师所撰 Node.js 理论进阶书籍，深入理解 Node.js 必备。\n\n### Node.js 应用\n\n🖥网络资源：\n\n- [MDN Express 教程](https://developer.mozilla.org/zh-CN/docs/Learn/Server-side/Express_Nodejs)：通过搭建一个图书馆应用，讲解 Express 框架各方面的知识。\n\n- [Koa2进阶学习笔记](https://chenshenhai.github.io/koa2-note/)：涵盖 Koa 2 的各方面使用，每个知识点都配有实例代码可供学习。\n\n📚书籍推荐：\n\n- [Node.js实战（第2版）](https://book.douban.com/subject/30288107/)：结合大量实例介绍如何用 JavaScript 和 Node 创建高性能的 Web 服务器，涵盖异步编程、状态管理、事件驱动编程等关键设计理念，旨在帮助读者成功晋级全栈开发。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuture-dev%2Fnodejs-roadmap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftuture-dev%2Fnodejs-roadmap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuture-dev%2Fnodejs-roadmap/lists"}