1.Nodejs是什么?
Node.js不是一种独立的语言,与php即是语言也是平台不同,也不是javascript的框架更不是浏览器的库,不能与Extjs相提并论。Node.js是一个让javascript运行在服务端的开发平台。
2.Node.js能做什么?
1、javascript是为客户端而产生的,Node.js是为服务端(网络)而生的。
2、适合具有复杂逻辑的网站
3、基于社交网络的大Web的应用
4、Web socket服务器
基于TCP的双向的,全双工的数据连接
双向:客户端、服务器端
全双工:数据的发送与接收,两者同步进行
建立socket应用
服务器必须支持web socket
nodejs
5、TCP/UDP套接字应用程序
6、命令行工具
7、交互式终端程序
3、Node.js最大的特性就是采用异步式I/O与事件驱动的框架设计
传统的框架是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式I/O调用时的时间开销。
Node.js使用的单线程模型,在执行的过程中会维护一个事件队列,程序在执行时在进入时间循环等待下一个事件到来
普通:
<span style="font-size:14px;">res=db.query('select * from user');
res.output();</span>
Node
.js:
<span style="font-size:14px;">res = dbquery('select * from user',function(res){
res.output();
});</span>
程序会自动往下执行
4.浏览器引擎革命
Google Chrome引擎是V8(最快的引擎)。Nodejs的引擎引用的就是V8,所以,为什么ExtJs在Chrome如此的快,就以为如此。
5.
node -v 版本
node -e (即eval ) 把字符串直接当为js代码执行
node 编译模式(直接编译js代码)
3.建立HTTP服务器(这里是最简单的例子)
<span style="font-size:14px;">var http = require('http'); //建立http服务
var serv = http.createServer(function(req, res) { //调用createServer方法
console.log('有人进来了');
/*res.writeHeader(200, {
'content-type' : 'text/html;charset="utf-8"'
});*/
res.writeHeader(404, {
'content-type' : 'text/html;charset="utf-8"'
});
//res.write('这是正文');
res.write('你所访问的资源不存在');
res.end();
}).listen(8888);
console.log('服务器开启成功');</span>
4.好用的工具supervisor
npm install supervisor -g (npm安装包自动安装,不多说)
最后小结一下同步I/O与异步I/O的区别:
同步式I/O:异步式I/O:
利用多线程提供吞吐量 单线程即可实现高吞吐量
通过事件片分割和线程调度利用多核CPU通过功能划分利用多核
需要有操作系统调度多线程使用多核CPU可以将单线程绑定到单核CPU
难以充分利用CPU资源 可以充分利用CPU资源
内存轨迹大,数据局部性弱 内存轨迹小,数据局部性强
符合线性的编程思维 不符合传统编程思维
以上为个人观点,如有不对,欢迎指出!
纯属手打,转载请标明出处!