"Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用 V8 引擎,同样,Node.js 实现了类似 Apache 和 nginx 的web服务,让你可以通过它来搭建基于 JavaScript 的 Web App。"
大家要是用过python的tornado,会发觉node.js和tornado真的有很多地方是相像的。。。 他的route,他的rule,他的模板。。。
node.js的发展太猛啦~ 看看他包的更新。
不扯淡了,直接实例:
源地址http://rfyiamcool.blog.51cto.com/1030776/1297043
这段代码使用了node.js的异步利器 onRequest
1 2 3 4 5 6 7 8 9 10 |
|
测试服务器:
测试结果:
然后咱们来用用node.js的web框架。。。
express.js是nodejs的一个MVC开发框架,并且支持jade等多种模板。
他的模块好全~
源地址http://rfyiamcool.blog.51cto.com/1030776/1297043
hello-world@0.0.1 /private/tmp
└─┬ express@3.0.0beta7
├── commander@0.6.1
├─┬ connect@2.3.9
│ ├── bytes@0.1.0
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── formidable@1.0.11
│ └── qs@0.4.2
├── cookie@0.0.3
├── debug@0.7.0
├── fresh@0.1.0
├── methods@0.0.1
├── mkdirp@0.3.3
├── range-parser@0.0.4
├─┬ response-send@0.0.1
│ └── crc@0.2.0
└─┬ send@0.0.3
└── mime@1.2.6
安装express模块
一段简单的使用代码,你懂的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
服务端的日志打印:
我们用下模板
1 |
|
运行代码:
1 2 3 4 |
|
客户端显示
我们在用node.js实现一个socket !
1 2 3 4 5 6 |
|
客户端的显示:
咱们再用node.js写个小功能,作为运维能用到的小功能,通过node.js调用linu命令。
在nodejs的child_process模块中,有两个类似的方法spawn和exec,都是通过生成一个子进程,去执行指定的命令,不过他们的用法稍有不同,在命令的指定上,exec相对灵活,等于一个shell的命令行,如'ps -ef | grep node'此类的管道操作也能一次性实现。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
通过url输出调用。大家通过spawn可以在页面调用linux命令了。
1 |
|
我们在搞一个对于实时系统常用的nosql在node.js里面的运用:
看官方的文档吧,里面demo还是不少的:
里面的实例还是不少的!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
过两天给大家出一个 node.js websocket的实时监控~
两套方案: redis node.js 和webscoket node.js
源地址http://rfyiamcool.blog.51cto.com/1030776/1297043
在开始聊这次的主题 web 框架
node.js最牛的框架【之一】 express本身就是一个很好的mvc 模型 ~~~
看着样子,又有点django的样子了哈~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
文件目录
public 主要是静态的文件
route 是route路由表
views 是视图模板
node_modules 是功能模块
已经可以简单实现 基于node.js express框架接口的写法了
我们开始测试他做接口和自带模块的承载能力~
接受get请求
处理url
源地址http://rfyiamcool.blog.51cto.com/1030776/1297043
然后咱们就结合nginx做负载均衡再来一次~
我这里的nginx.conf 没有做优化,直接就上。
1 2 3 4 5 6 |
|
看看流量和io情况
这是本机 !!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
这是在另一个服务器做压力测试 !!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
rps:代表每秒处理请求数,并发的主要指标
tpq:每个请求处理的时间,单位毫秒。
fail:代表平均处理失败请求个数
50%req:代表50%的请求在多少毫秒内返回。
我这里就给大家入个门,大家要是有php,python的基础的话,看官网的文档,一看就懂的~
要是没有基础的话。。。。那就。。。使劲看吧~
总结:
快:这个快有两方面,第一是V8引擎快,在V8引擎背后操刀的是Lars Bak大神,他创造过高性能SmallTalk引擎和Java Hotspot引擎(现在Java的默认VM),他带领下的V8引擎让Javascript速度达到了一个新的阶段。第二是异步执行,Node.js功能上是一个基于V8引擎的异步网络和IO Library,和Python的Twisted很像,不同的是Node.js的event loop是很底层的深入在语言中的,可以想象成整个文件在执行的时候就在一个很大的event loop里。
npm:npm可以说是用起来最顺手的package management了,npm作为Node.js的官方package management,汇集了整个社区最集中的资源。不像Python经历过easy_install和pip,还有2to3的问题。
本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1297043,如需转载请自行联系原作者