读过一本好书,像交了一个益友。——臧克家
Node.js 技术栈 是由作者 “五月君” 于 2019 年 4 月梳理之后最早开源于 Github,同时注册了微信公众号「Nodejs技术栈」。本文档包含了作者从事 Node.js Developer 以来的学习历程,旨在为大家提供一个较详细的学习教程,侧重点更倾向于 Node.js 服务端所涉及的技术栈。
也致力于为大家分享最具有价值的 Node.js 相关技术干货,包含 Node.js 基础知识(JavaScript、ES6/ES7/ES8...、TypeScript)、Node.js 核心模块、主流框架实践、缓存、数据库、消息中间件、DevOps、HTTP 协议以及 Node.js 在微服务、分布式领域下的应用分享等。
思维导图
说明:大致方向不会变,中间细节部分之后可能会修改,欢迎关注公众号「Nodejs技术栈」回复 “思维导图” 查看最新版学习指南
目录大纲
-
JavaScript
基础
This
函数
对象
原型
正则
-
ES系列
sync/await
Object.values()
Object.entries()
includes
指数操作符
Let、Const 变量声明
数据类型功能扩展
Set、Map 集合
解构赋值
箭头函数
Promise
Symbol
Decorators
Generator
ES6
ES7
ES8
-
Node.js 基础
Node.js 初识
Node.js 发展史
开发环境搭建
NPM 包管理器
构建第一个 Hello World 应用程序
初识 Node.js 模块
回调函数/异步编程
Node.js 编码风格指南
Koa.js 入门
Node.js 中应用 MongoDB
Node.js 中应用 Redis
基于 Koa.js 的简单 CRUD
统一异常处理
单元测试
PM2 部署
Node.js 应用场景
-
Node.js 核心模块
Module — 模块
HTTP / HTTPS / HTTP2
Net — 网络
Event — 事件
Stream — 流
Buffer — 缓冲区
Crypto — 加密
FS — 文件
Timer — 定时器
-
Node.js 进阶
Memory 内存管理
V8 虚拟机
I/O 模型
EventLoop 事件轮询
Threads&Process 线程和进程
Testing 测试
Schedule 定时任务
Template 模版引擎
Cache 缓存
性能调优
最佳实战
-
Node.js 框架
Express.js
Koa.js
Egg.js
Nest.js
Midway.js
Meteor.js
-
数据库
Azure CosmosDB
Amazon DynamoDB
ElasticSearch
Solr
Sphinx
MySql
PostgreSQL
SQL Server
Redis
MongoDB
CouchDB
NoSql
关系型
搜索引擎
云数据库
-
HTTP
HTTP 协议发展史
5 层网络模型
HTTP 三次握手/四次挥手
URI/URL/URN
跨域的形成及解决方案
缓存头 Cache-Control
Cookie 与 Session
HTTP 长链接
HTTP2 协议实践
-
微服务
可能出现的问题
熔断
限流
服务降级
Consul
Zookper
ResultFul API
GraphQL
HAL 基于ResultFul协议的提升
RPC
消息队列
认识微服务
数据通信
服务注册/发现
柔性可用/容错
-
消息中间价
RabbitMQ
RocketMQ
Kafka
ActiveMQ
-
分布式
认识分布式
分布式事务
分布式锁
分布式限流
分布式订单号生产策略
分布式系统校验
-
DevOps
PM2 生产环境部署
Docker
Jenkins 持续集成
SonarQube 代码质量评测分析
Jumpserver 开源堡垒机
-
安全
CSRF
XSS
越权
Cookies 安全策略
HTTP/HTTPS 传输安全
SQL 注入
中间人攻击
OAuth 2.0
-
工具
Git 版本控制
VSCode 编辑器
-
设计模式
单例模式
工厂模式
装饰器模式
代理模式
适配器模式
观察者模式
-
数据结构
Queue
Set
List
Map
Heap - 堆
Stack - 栈
Graph - 图
二叉树
红黑树
十大排序
-
SOLID 五大原则
单一职责原则
开放封闭原则
里式替换原则
接口分离原则
依赖倒置原则
任重而道远!
资源
本项目开源于 Github: https://github.com/Q-Angelo/Nodejs-Roadmap,同时也会在微信公众号「Nodejs技术栈」进行同步,欢迎关注!如需进群交流的可先关注微信公众号,后台回复“加群”,即可加入「Nodejs技术栈交流群」!