主页 >> JsCss > Node.js研究分享,入门示例

2013/07/04 | 星期四 分类:JsCss | 没有评论 标签: , | 作者: | 1,781 views

Node.js研究分享,入门示例

Node.js研究分享

A.什么是Node.js ?
Node.js是一个基于V8引擎[1]的,可以快速构建网络服务及应用的平台,通俗点说是一套用来编写高性能网络服务器的JavaScript工具包。

更多相关Node.js的解释:.
1.Node.js是一个服务器端 JavaScript 解释器,可是真的以为JavaScript不错的同学学习Node就能轻松拿下,那么你就错了,总结:水深不深我还不知道,不过确实不浅。
2.Node.js的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码。处理高并发和异步I/O是Node受到开发人员的关注的原因之一。.
3.Node.js本身运行Google V8 JavaScript引擎,所以速度和性能非常好,看chrome就知道,而且Node对其封装的同时还改进了其处理二进制数据的能力。因此,Node不仅仅简单的使用了V8,还对其进行了优化,使其在各种环境下更加给力。
4.Node.js第三方的扩展和模块在Node的使用中起到重要的作用,比如:使用NPM安装各种Node的软件包(socket.io,express,redis等)并发布自己为Node写的软件包。

B.Node.js安装:window7 系统
1.win7系统32位,下载32-bit:node.exe 安装(办公环境电脑,简称WORK)
2.win7系统64位,下载64-bit:node.msi 安装(64-bit:node.exe 家里的机器无法安装,简称HOME)
注释:Linux,Mac OS X 等平台请查阅相关资料安装。

测试安装示例1:hello.js

图1:命令行运行
1
图2:浏览器查看
2
C.示例1解释:
a. 全局方法require()是用来导入模块的,一般直接把 require() 方法的返回值赋值给一个变量,在 JavaScript 代码中直接使用此变量即可 。require(“http”) 就是加载系统预置的 http 模块
b. http.createServer 是模块的方法,目的就是创建并返回一个新的web server对象,并且给服务绑定一个回调,用以处理请求。
c. 通过 http.listen() 方法就可以让该 HTTP 服务器在特定端口监听。
d. console.log 这个指令是在浏览器控制台输出日志,用来调试程序,跟alert 类似,但不像alert那样会打断程序:例如火狐,你打开firebug控制台,就可以看到调试结果了。
总结:通过这个简单示例,体现了事件驱动、异步编程,在createServer函数的参数中指定了一个回调函数(采用Javascript的匿名函数实现),当有http请求发送过来时,Node.js就会调用该回调函数来处理请求并响应。.

D.Node.js 安装扩展、框架
WORK下命令行CMD,直接可以运行NPM 安装socket.io
HOME下命令行CMD,必须要进入Node.js目录才可以运行NPM,安装socket.io
>npm install socket.io
>npm install socket.io express

E.扩展测试示例2:服务器端socket.js

客户端socket.html

图3:命令行运行
3
图4:浏览器查看 http://localhost:3001
4
图5:命令行监听
5
说明扩展、框架安装成功。

* Node.js与PHP交互Demo示例3:研究Node.js案例成果.

服务器代码:demo.js

客户端代码:demo.php

示例3说明:
1.服务器端程序在node下运行 node demo.js.
图7:运行截图
7
2.客户端程序demo.php 在apache下运行,需要注意的配置:
a.jquery.js正常引入,省略;
b.socket.io.js 这个必须引入正确,这个扩展一般安装node安装扩展中
c.var socket = io.connect(‘http://localhost:8888/’); 这一句就是监听,管道连接node.js服务器的。
3.运行操作,在浏览器中输入访问到demo.php的地址,进行如下访问:多条地址
a.http://localhost/demo/demo.php?from=user1&to=user2
b.http://localhost/demo/demo.php?from=user2&to=user3
c.http://localhost/demo/demo.php?from=user3&to=user1
图8:运行截图
8
地址中的user1 … userN 就是用户的意思:
a.发送的数据,在a,b同时能够监听到
b.发送的数据,在b,c同时能够监听到
c.发送的数据,在c,a同时能够监听到
这个就是类似私信的推送功能,扩展服务器程序即可做到,从队列服务器中取数据向客户端推送信息!

Node.js的特点
1.Node.js事件驱动、异步编程的;
2.Node.js的性能不错;.
3.Node.js在设计上也是比较大胆,它以单进程、单线程模式运行(很吃惊,对吧?这和Javascript的运行方式一致),事件驱动机制是Node.js通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文切换,这意味着面对大规模的http请求,Node.js凭借事件驱动搞定一切,习惯了传统语言的网络服务开发人员可能对多线程并发和协作非常熟悉,但是面对Node.js,我们需要接受和理解它的特点。由此我们是否可以推测出这样的设计会导致负载的压力集中在CPU(事件循环处理?)而不是内存;.
4.Javascript在动态语言中性能较好,有开发人员对Javacript、Python、Ruby等动态语言做了性能分析,发现Javascript的性能要好于其他语言,再加上V8引擎也是同类的佼佼者,所以Node.js的性能也受益其中。
5.Node.js的另一个特点是它支持的编程语言是Javascript。

Node.js的模块机制
1.require方法中的文件查找策略
由于Node.js中存在4类模块(原生模块和3种文件模块),尽管require方法极其简单,但是内部的加载却是十分复杂的,其加载优先级也各自不同。
查看载入流程图6
6

名词解释:
[1]V8引擎:Google开发的开源用于其 Chrome 浏览器的底层 JavaScript 引擎,V8引擎执行Javascript的速度非常快,性能非常好。
[2]NPM:npm就是模块的管理工具

发展历史:
2009年2月,Ryan Dahl在博客上宣布准备基于V8创建一个轻量级的Web服务器并提供一套库。
2009年5月,Ryan Dahl在GitHub上发布了最初版本的部分Node.js包,随后几个月里,有人开始使用Node.js开发应用。
2009年11月和2010年4月,两届JSConf大会都安排了Node.js的讲座。
2010年年底,Node.js获得云计算服务商Joyent资助,创始人Ryan Dahl加入Joyent全职负责Node.js的发展。
2011年7月,Node.js在微软的支持下发布Windows版本。.
2012年12月22日,Luvit 0.6.0 发布,Lua 实现的 Node.js。

资料查阅:
1.官方网站:http://www.nodejs.org/
2.百度百科:http://baike.baidu.com/view/3974030.htm
3.Cnblogs:http://www.cnblogs.com/Darren_code/archive/2011/10/31/2207063.html
4.Socket.io:http://socket.io/#how-to-use
5.Node中文:http://cnodejs.org/ #淘宝人发起的社区
6.IBM:http://www.ibm.com/developerworks/cn/opensource/os-nodejs/index.html
7.NPM:https://npmjs.org/
8.InfoQ:http://www.infoq.com/cn/articles/what-is-nodejs
9.Node.js入门:http://www.nodebeginner.org/index-zh-cn.html

  • 本文目前尚无任何评论.
    1. 本文目前尚无任何 trackbacks 和 pingbacks.