Nodejs主要应用领域
1> RESTFul API
2> 实时通信:如消息推送等
3> 高并发
4> I/O阻塞
NodeJS 的优势
1. 性能高 (高出php86倍) 2. 跟前台JS配合方便
3. 便于前端学习
异步流程控制对象 async
1. 串行无关联 assync.series
2. 并行无关联 async.parallel
3. 串行有关联 waterfall
事件监听
event.EventEmitter
1>emitter.addListener(event,listenner)==on //添加监听
2>emitter.on(event,listener)
3>emitter.once(event,listener) //一次性的监听器
4>emitter.removeListener(event,listener) //删除指定监听
5>emitter.removeAllListeners([event]) //删除所有监听
6>emitter.setMaxListener(n) //设置最大监听数 0:无限制 ,超出10个 EventEmitter将打印警告信息
7>emitter.listeners(event) //返回特定事件的监听器集合
8>emitter.emit(event,[arg1],[arg2],[...]) //顺序执行每个事件监听器
node 框架
express,koa
从浏览器输入url到加载出界面,期间经历了什么?
1. Chrome 搜索自身的DNS
2. 搜索操作系统自身的DNS缓存(浏览器没有找到缓存或者缓存已经失效)
3. 读取本地的HOST文件
4. 浏览器发起一个DNS的一个系统调用
5. 浏览器获得域名对应的IP地址后,发起HTTP三次握手
6.TCP/IP连接建立,浏览器开始向服务器发送http请求。
7. 服务器接收请求,根据参数把处理后的结果返回给浏览器。
8. 浏览器拿到返回结果,解析并渲染页面
Node 解析参数
一. 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);
})