Node知识图谱

Node

研发

开发环境搭建

下载/安装:nodejs.org

windows:执行exe文件
linux:源码安装或者使用wget、yum之类的下载工具

编辑器:webstorm、sublime、vim

webstorm:功能强大,吃内存,要钱
sublime:简洁,免费,插件多,插件装多了也卡
vim:初学曲线较陡,插件丰富,linux自带

命令行工具:cmd、xshell

包管理器

npm

yarn(会缓存下载的包,避免重复下载,目的是提升npm包的下载速度,facebook出品)

私有源:cnpm、tnpm等

框架选型

express:中间件、生态完善,tj大神出品

koa:脱胎于express,提升异步编程体验,执行性能上比express并无太大优势

koa1:中间件+es6,利用ES6的generator提升异步编程体验
koa2:中间件+es7,利用ES7的aysnc/await提升异步编程体验

hapi:遵循配置大于编码原则,沃尔玛前端团队出品

sails:模仿ruby on rails框架

框架对比:http://www.jianshu.com/p/8b7eb2b447f5

tsw:qq空间出品,集成了很多腾讯内部组件

协议

网络传输协议

http/https:推荐使用request.js
tcp:net模块
udp:dgram模块

数据序列化协议

json(文本协议,常用于http通信)
protocol buffer(二进制协议,常用于socket通信),js原生不支持,可以使用protobuf.js来解析,参考文章:http://ivweb.io/topic/570130a306f2400432c1396c

接口协议

restful apis(语义化,几乎所有web框架都支持)
Graphql(解决restful接口过于原子化的缺陷,facebook出品,需要在前端和后台接口之前搭建一层graphql server做数据处理)
RPC(后台服务间通信,语言无关)

网络序/本地序:Buffer模块api原生支持两种序列的转换,参考文章:http://ivweb.io/topic/57fe263b2a25000c315a3d8a

存储

关系型数据库

mysql(常用)
Oracle
MSSQL
PostreSQL
MariaSQL

缓存

redis(五种数据结构)
memcache(key/value形式,无法遍历)

nosql

mongodb(js友好,基本存储数据结构为json)
Redis(五种数据结构)

orm

sequelize(mysql)
bookshelf(mysql)
mongoose

zookeeper(公共配置中心,常用于分布式系统,解决异构系统公共配置数据问题),参考文章:http://ivweb.io/topic/579db07093d9938132cc8d85

node c++扩展

gcc

node-gyp

ffi,参考文章:http://ivweb.io/topic/57732fbef0a5487b05f325bf

消息队列

RabbitMQ

Kafka

zmq

server render

webso

同构,参考文章:http://ivweb.io/topic/5636466d09e01a534b461ec3

设计模式

中间件模式,典型模块:connect

发布/订阅模式:参考eventemit模块

观察者模式

测试

mocha,测试框架

chai

jasmine

should.js(断言)

istanbul(测试覆盖率)

Assert(断言),nodejs原生

部署

web服务器

apache(多进程模型,超过10000并发有风险)

nginx(事件驱动,优化后可支持几万+并发)

caddy(天然支持http2+https)

发布部署/持续集成

织云

Jenkins

Travis

docker

运维

压测

仅框架无逻辑(1700+QPS)

上线前压测规范

性能分析

监控&告警

monitor

模调

硬件监控

内存
CPU负载
磁盘使用率

异常处理

负载均衡/失效转移

内存泄漏

devTool
heapdump + chrome devTool
memwatch

进程管理

pm2
forever

代码异常

error first callback:错误优先的回调函数
domain,可以捕获异步方法中的错误,新版本node中将废弃该模块
try catch
process.on(‘uncaughtException’,cb):捕获进程中未处理的异常,但捕获不了异步方法中的异常

安全/认证

oauth2

json web token

csrf

sql注入

终端工具

bash scripts

基础命令

top:检测机器性能

ifconfig:网卡相关

ps:进程相关

netstat:端口相关

tail/cat/vim等查看文件的命令

应用场景

爬虫

phantomjs,参考文章:http://ivweb.io/topic/560b402ac2317a8c3e08621c

cherrio:操作dom

request.js:发起网络请求

iconv-lite:字符编码转换

构建工具

fis

gulp:相对于grunt,引入了流的概念

grunt

webpack

学习资源

awesome-nodejs:https://github.com/sindresorhus/awesome-nodejs

node地下铁

nodejs weekly

脑图链接:http://naotu.baidu.com/file/713825603df750aa9cfafb9c42d9dd00?token=d008a5078079aa29

你可能感兴趣的:(NodeJS)