Nodejs主要應(yīng)用領(lǐng)域
1>? RESTFul API
2>? 實時通信:如消息推送等
3>? 高并發(fā)
4> I/O阻塞
NodeJS 的優(yōu)勢
1. 性能高? (高出php86倍) ?? 2. 跟前臺JS配合方便
3. 便于前端學(xué)習(xí) ? ?
異步流程控制對象 async
1. 串行無關(guān)聯(lián) assync.series
2. 并行無關(guān)聯(lián) ? async.parallel
3. 串行有關(guān)聯(lián) waterfall
事件監(jiān)聽
event.EventEmitter
? ? 1>emitter.addListener(event,listenner)==on //添加監(jiān)聽
? ? 2>emitter.on(event,listener)
? ? 3>emitter.once(event,listener)? //一次性的監(jiān)聽器
? ? 4>emitter.removeListener(event,listener)? //刪除指定監(jiān)聽
? ? 5>emitter.removeAllListeners([event])? //刪除所有監(jiān)聽
? ? 6>emitter.setMaxListener(n)? //設(shè)置最大監(jiān)聽數(shù) 0:無限制 ,超出10個 EventEmitter將打印警告信息
? ? 7>emitter.listeners(event)? //返回特定事件的監(jiān)聽器集合
? ? 8>emitter.emit(event,[arg1],[arg2],[...]) //順序執(zhí)行每個事件監(jiān)聽器
node 框架
express,koa
從瀏覽器輸入url到加載出界面,期間經(jīng)歷了什么?
1. Chrome 搜索自身的DNS
2. 搜索操作系統(tǒng)自身的DNS緩存(瀏覽器沒有找到緩存或者緩存已經(jīng)失效)
3. 讀取本地的HOST文件
4. 瀏覽器發(fā)起一個DNS的一個系統(tǒng)調(diào)用
5. 瀏覽器獲得域名對應(yīng)的IP地址后,發(fā)起HTTP三次握手
6.TCP/IP連接建立,瀏覽器開始向服務(wù)器發(fā)送http請求。
7. 服務(wù)器接收請求,根據(jù)參數(shù)把處理后的結(jié)果返回給瀏覽器。
8. 瀏覽器拿到返回結(jié)果,解析并渲染頁面
Node 解析參數(shù)
一. GET
var rdata = url.parse(req.url,true) //true 表示解析query字段的字符串為對象
二. POST
var post = '';
req.on('data',function(chunk){
? ? post += chunk;
})
req.on('end',function(){
? ? ? post = querystring.parse(post);
})
????