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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章