本文档是作者从事 Node.js Developer
以来的学习历程,旨在为大家提供一个较详细的学习教程,侧重点更倾向 于Node.js 服务端所涉及的技术栈,如果本文能为您得到帮助,请给予支持!
如何支持:
- 关注公众号 Nodejs技术栈
- 点击右上角Star ⭐ 给予关注
- 分享给您身边更多的小伙伴
为 Node.js 面试及常见问题打造的一个项目 🇨🇳 Node.js 面试问题 | 🇬🇧 Nodejs-Interview-Questions
作者: 五月君,Node.js Developer,慕课网认证作者。
JavaScript |
ECMAScript6 |
Node.js |
DataBase |
Microservice |
HTTP |
DevOps |
工具 |
资料 |
---|
Node.js技术栈在线预览: https://www.nodejs.red/
- 基础 [more]
[基础]
常见问题[基础]
undefined与undeclared的区别?[基础]
typeof、instanceof 类型检测[作用域]
eval()、with 欺骗词法作用域[Error]
错误类型ReferenceError、TypeError的区别?[面试]
编写一个函数实现多维数组去重?
,参考:数组去重的三种实现方式[面试]
实现对多维数组降维?
,参考:数组降维--扁平化多维数组
- This [more]
- 函数 [more]
[Function]
函数声明与函数表达式[Function]
内置函数[Function]
arguments对象[Function]
call和apply的使用与区别?[Function]
引用传递[面试]
递归调用实现一个阶乘函数?
,参考:arguments对象[面试]
如何理解JavaScript中的引用传递与值传递?JS中是否拥有引用传递?
,参考:引用传递[面试]
经典面试题:什么是匿名函数和闭包?
,参考:深入理解匿名函数与闭包
- 对象 [more]
[Object]
创建对象的四种方法:对象字面量、new关键字构造形式、create方法、原型prototype创建[面试]
什么是引用传递?{} == {} 是否等于true
,参考:对象引用类型示例分析[面试]
如何编写一个对象的深度拷贝函数?
,参考:对象copy实现[面试]
new操作符具体做了哪些操作,重要知识点!
,参考:使用new关键字构造形式创建
- 原型 [more]
[ProtoType]
原型概念[ProtoType]
原型模式的执行流程[ProtoType]
构造函数实例属性方法[ProtoType]
构建原型属性方法[ProtoType]
原型字面量创建对象、字面量创建对象、构造函数创建对象[ProtoType]
原型的实际应用、jquery中原型应用、zepto中原型的应用[面试]
如何实现原型的扩展?,参考:原型的扩展
- 正则 [more]
- 变量声明 [more]
[Variable]
新增let&const变量声明
- 解构赋值 [more]
- 扩展系列 [more]
- 集合系列 [more]
[Set]
集合Set、WeakSet[Map]
集合Map、WeakMap[Map-Array]
Map与Array横向对比增、查、改、删[Set-Array]
Set与Array增、查、改、删对比[Map-Set-Array]
Map、Set、Object三者增、查、改、删对比
- Promise [more]
[Promise]
Promise的基本使用和原理[Promise]
Callback方式书写[Promise]
Promise方式书写[Promise]
Promise.finally()[Promise]
Promise并行执行 Promise.all()[Promise]
Promise率先执行 Promise.race()[Promise]
错误捕获[面试]
Promise 中 .then 的第二参数与 .catch 有什么区别?
,参考:错误捕获[面试]
怎么让一个函数无论promise对象成功和失败都能被调用?
,参考:finally
- Decorators [more]
- Symbol [more]
- Generator [more]
- 模块 [more]
- 事件轮询(Event Loop) [more]
[EventLoop]
线程模型、EventLoop介绍[I/O]
操作系统I/O模型及轮询技术演变[I/O]
白话风格(小明与妹子的邂逅)讲解I/O演进[Node.js-EventLoop]
Node.js中的Event Loop[Browser-EventLoop]
浏览器中的Event Loop[Interview]
I/O多路复用轮询技术select和epoll的区别?
,参考:#
- 中间件 [more]
[Mddleware]
常用Web框架&中间件汇总
- 缓存
[Cache]
memory-fs 将文件写入内存[Cache]
Memory Cache[Cache]
Node Cache
- 定时任务
[Schedule]
node-schedule[Schedule]
Agenda 将Node中的定时任务存储在数据库中(官方推荐MongoDB)[Schedule]
Node.js结合RabbitMQ延迟队列实现定时任务
- 模板引擎
[Template]
Ejs[Template]
Handlebarsjs[Template]
Jade
- 日志记录收集 [more]
[Logger]
Sentry--错误日志收集框架[Logger]
log4js 日志记录工具[Logger]
ELK--开源的日志分析系统[Logger]
winston日志模块
- 测试
Unit Testing
mocha NodeJS里最常用的测试框架Unit Testing
chai 一个断言库Unit Testing
Jest — Facebook推出的一款测试框架,集成了 Mocha,chai,jsdom,sinon等功能。BDD Testing
Jasmine — 一款基于行为驱动的JavaScript测试框架Testing Tool
istanbul Istanbul - a JS code coverage tool written in JS 测试覆盖率E2E Testing
Puppeteer
- 框架
[Framework]
Express 中文版、Express of English Version[Framework]
Koa 中文版、Koa of English Version[Framework]
Egg 中文版、Egg of English Version[Framework]
Nest.js 中文版、Nest.js
- ORM
Relational
NoSQL
- Search Engines
- 服务注册发现之Consul [more]
[Consul]
使用Consul解决了哪些问题[Consul]
微服务Consul系列之服务部署、搭建、使用[Consul]
微服务Consul系列之集群搭建[Consul]
微服务Consul系列之服务注册与服务发现[Question]
微服务Consul系列之问题汇总篇
- 消息中间件之RabbitMQ [more]
[RabbitMQ]
主流消息中间件简介[RabbitMQ]
RabbitMQ安装、部署、启动- Mac版安装
- Linux系统(Ubuntu、CentOS)安装
- 运行与启动
[QOS]
RabbitMQ高级特性消费端限流策略实现[RabbitMQ]
RabbitMQ延迟队列实现定时任务
- 轻量级数据通信
- http三次握手 [more]
[HTTP三次握手]
三次握手时序图[HTTP三次握手]
三次握手数据包详细内容分析[HTTP三次握手]
分析总结[面试]
说下TCP三次握手的过程?
,参考:三次握手时序图
- 跨域CORS [more]
[CORS]
跨域形成原理简介[CORS]
实例来验证跨域的产生过程[CORS]
基于http协议层面的几种解决办法[CORS]
CORS预请求[面试]
你之前遇见过跨域吗?说一下跨域的形成与实现。
,参考:CORS
- 缓存头Cache-Control的含义和使用
[Cache-Control]
可缓存性(public、private、no-cache)[Cache-Control]
到期 (max-age、s-maxage、max-stale)[Cache-Control]
重新验证 (must-revalidate、proxy-revalidate)[Cache-Control]
其它 (no-store、no-transform)[Cache-Control]
缓存cache-control示例
- HTTP长链接
[KeepAlive]
http长链接简介[KeepAlive]
http/1.1中长链接的实现示例[KeepAlive]
长链接在http2中的应用与http/1.1协议中的对比[面试]
Chrome浏览器允许的一次性最大TCP并发链接是几个?
,参考:HTTP长链接分析
- Nginx服务配置
[Nginx]
Nginx安装启动[Nginx]
修改hosts文件配置本地域名[Nginx]
Nginx配置缓存[Nginx]
nginx部署https服务[Nginx]
实现http2协议
- Node.js生产环境完整部署指南 [more]
[Node.js]
用户权限管理及登陆服务器[Node.js]
增强服务器安全等级[Node.js]
Node.js生产环境部署[Node.js]
Nginx端口映射[Node.js]
Mongodb生产环境部署[Node.js]
实现服务器与第三方仓库的关联-PM2代码部署
- NPM模块管理 [more]
[NPM]
npm源设置[NPM]
nnpm注册登录[NPM]
npm module 发布[NPM]
可能遇到的问题
- Linux系统问题汇总 [more]
- Git [more]
[Git]
Git常用命令及日常问题集锦
- SEO [more]
[SEO实战]
SEO网站优化title设置与快速排名
- Docsify 快速搭建个人博客
建立本开源项目的初衷是基于个人学习与工作中对 Node.js 相关技术栈的总结记录,在这里也希望能帮助一些在学习 Node.js 过程中遇到问题的小伙伴,如果您需要转载本仓库的一些文章到自己的博客,请按照以下格式注明出处,谢谢合作。
作者:五月君
链接:https://github.com/Q-Angelo/Nodejs-Roadmap
来源:Nodejs.js技术栈
- 如果您对本项目有任何建议或发现文中内容有误的,欢迎提交 issues 进行指正。
- 对于文中我没有涉及到知识点,欢迎提交 PR。
- 如果您有文章推荐请以 markdown 格式到邮箱
qzfweb@gmail.com
,中文技术文档的写作规范指南。
- 加入群聊 本群的宗旨是给大家提供一个良好的技术学习交流平台,所以杜绝一切广告!由于微信群人满 100 之后无法加入,请扫描下方二维码先添加作者 “五月君” 微信,备注:Node.js。
- 公众号 专注于Node.js相关技术栈的研究分享,包括基础知识、Nodejs、Consul、Redis、微服务、消息中间件等,如果大家感兴趣可以给予关注支持!
未完待续,持续更新中。。。