最新消息:

express模块的作用(Express的作用是什么啊)

媒体模版 admin 浏览 评论

一、Express框架

前面的章节已经介绍过了,可以使用npm来安装node.js模块。具体操作请参照以前写的nodejs概论。

Express是一个nodejs的web开源框架,用于快速的搭建web项目。其主要集成了web的http服务器的创建、静态文本管理、服务器URL地址请求处理、get和post请求处理分发、session处理等功能。

使用方法,在cmd中打开你所想创建web项目的路径。然后输入

Express appname

即可创建一个名为appname的web项目。控制台打印结果

在cmd中进入appname文件夹输入

node appname.js

返回结果如下图,表示安装成功!

在项目开发中经常会出现这样的问题

此错误表示没有安装相关模块,解决办法是在cmd上打开项目文件夹,输入

npm install express

安装成功后会在本文件路径下生成一个node_modules,里面包含了Express框架代码。

其他模块也可用类似的方法进行安装,安装后的路径同样是在node_modules下。

二、jade模块

jade是一款高性能、简洁易懂的模板引擎。可通过jade来编写html文件。

jade类似一个用于快速编写html的语言,其编写后的文件后缀为.jade。

以下为文件的内容

在cmd中输入,压缩的过的可以通过加-P来不压缩,如果每次更改模版都要打命令行一次很麻烦是不是,我们可以通过加上jade-P-w jade.jade加上一个-w来开启监视模式,每次更改模版,html文件都会自动编译咯

生成后的html文件如下:

在jada文件中是可以使用for循环和if判断语句的,可以让你体会类似JSP的<%%>和php的<php></php>在网页上输出数据的快感。

三、forever模块

nodejs作为http服务器,需要确保服务顺利进行,要注意一下两点:

1.后台服务运行,监控运行日志,以及http运行日志;

2.确保项目的正常安全运行,Node.js的启动命令node,很大程度无法满足运行需求;

Node.js的forever模块在第二点就可以起到很大的作用,同时其拥有监控文件更改、自动重启等功能。

forever模块的使用方法有两种:1.在命令行中使用

forever-l forever.log-o out.log-e err.log app.js

-l forever.log-o out.log-e err.log分别指定了forever的运行日志,脚本流水日志,脚本运行错误日志,启动后将在本文件夹下产生out.log、err.log文件。

2.在编码中require forever模块使用。

四、Socket.IO模块

Socket.IO模块主要功能是将WebSocket协议应用到所有浏览器。主要用于实时的长连接多求情项目中。

例如:在线联网游戏,实时聊天、实时股票查看、二维码扫描登录等。

安装方法仍然是在cmd在中输入npm install socket.io

如何使用Socket.IO来创建一个项目。

需要分别实现服务端和客户端的逻辑:

先创建一个服务端的node.js脚本index_server.js

var app= require('http').createServer(handler)//创建服务器app

, io= require('socket.io').listen(app)//引用socket.io模块监听app

, fs= require('fs')//引用文件处理模块

app.listen(80);//指定app监听的端口,第二个参数127.0.0.1可省略

function handler(req, res){

fs.readFile(__dirname+'/index.html', function(err, data){ if(err){

res.writeHead(500); return res.end('Error loading index.html');

}

res.writeHead(200);

res.end(data);

});

}

io.sockets.on('connection', function(socket){

socket.emit('news',{ hello:'world'});

socket.on('my other event', function(data){

console.log(data);

});

});

其中,socket.emit()为Socket发送消息的函数,第一个参数表示发送消息的key值,第二个参数为发送消息的内容,也就是发送的数据。

Socket。on()为Socket接收消息的函数,第一个参数为接收消息的可以值,第二个参数为回调函数,其中回调函数携带的参数为接收消息所发送的数据。

接下来web前端如何使用JavaScrit来连接Socket服务器。

新建一个index_client.html

<script type="text/javascript" src="socket.js"></script>

<script type="text/javascript"> var socket= io.connect(';);//创建本地sock连接

socket.on('news',function(data){//Socket接收news消息时执行回调函数 console.log(data);

socket.emit('my other event',{my:'data'});

});</script>

<script type="text/javascript" src="socket.js"></script>加载已经安装好的Socket.io的本地JavaScrit文件。

var socket= io.connect(';);因为端口为80,所有这里可以不端口号

socket.on('news',function(data){}//客户端接收news消息成功后,发送my other event消息到服务端,发送的消息内容为json对象{my:'data'}

接下来只需要运行服务端的index_server.js文件来启动socket服务

效果:在浏览器输入按F12调出浏览器的控制台console即可看见打印出了一个object对象。

执行完毕后可能会报错:catnot find module socket.io,说明你的socket.IO没有安装,或已经安装并配置为全局,但你的安装路径并没有配置到在path中,所有无法引用。

你可以选择配置path,或者安装到项目内。这里建议安装到你的项目目录下,而不是简单粗暴的配置为全局。先卸载npm uninstall socket.io进入指定目录后安装node index_server.js

socket.io详细请参阅

五、request模块

request模块为开发者提供了一种简单访问HTTP请求的方法。request还支持HTTPS的访问方法。

安装:

npm install requset

request模块基本上覆盖了所有的HTTP请求方式如GET,POST,HEAD,DEL等。但其最基本的两个方法是request.get()和request.post().

get和post的区别

get:

1.使用get向服务器发出和接收的请求会附在url之后。类似:?id=1221&name=5555这个url中传递了两个参数,一个为id,一个为name。

2.get请求不能超过1024个字节。

post没有限制,也不会附在url上。

接下来做一个简单的实例

get实例:

首先新建一个服务器app_get.js

var http= require("http");

http.createServer(function(req,res){

res.writeHead(200,{'content-Type':'text/plain'});

res.end('Hello world\n'+req.method);

}).listen(1337,"127.0.0.1");

再建一个发送求情的request_get.js文件

var request=require('request');

request.get("",function(error,response,result){

console.log(result);

});

在CMD中运行app_get.js,运行成功后,再打开一个cmd(之前的cmd不要关闭),执行request_get.js文件。

执行后的结果如下

hello world

GET

可以看出,通过request.get方法访问

返回的结果就是res.end()的参数

post实例:

和上面一样,先新建服务器app_post.js

var http= require("http"),

querystring=require('querystring');

http.createServer(function(req,res){ var postData="";//开始异步接收客户端post的数据

req.addListener("data",function(postDataChunk){

postData+= postDataChunk;

});//异步post数据接收完毕后执行匿名回调函数

req.addListener("end",function(){ var postStr=JSON.stringify(querystring.parse(postData));

res.writeHead(200,{'content-Type':'text/plain'});

res.end(postStr+'\n'+req.method);

});

}).listen(1400,"127.0.0.1");

然后再新建一个request_post.js

var request=require("request");

request.post(';,{form:{'name':'ermu','book':'node.js'}},function(error,response,result){

console.log(result);

})

像上面一样在cmd中执行后显示的结果如下:

D:\nodejs\src\request>node request_post.js

{"name":"ermu","book":"node.js"}

POST

request post提交了一个json对象{"name":"ermu","book":"node.js"}而服务器接通过获取该POST数据,然后返回客户端,同时将http请求方式也响应到客户端。

request post参数可以有两种传递方式。

其中,第一种是将url和form表单的数据作为json参数在request post传递。举例如下:

request.post('url':':{'name':'ermu','book':'node.js'}},function(error,response,result){

console.log(result);

})

另一种是将url和form作为两个参数,上面的实例就是使用这种方法。

六、 Formidable模块

该模块的目的是为了解决文件上传。

在原生的node.js模块中,提供了获取post数据的方法,但是并没有直接获取上传文件。

ExpressCard标准承诺向台式电脑和笔记本电脑提供更薄、更快、更轻的扩展模块。消费者可以方便地将这ExpressCard与PC卡的不同

虽然ExpressCard技术借用了现有PC卡技术中的许多特性,但前者在外型尺寸、性能、可靠性、适应性、热插拔和自动设置等多种特性之间达到了更理想的平衡。ExpressCard标准与PC卡之间有诸多不同之处。

1.尺寸。ExpressCard模块在物理尺寸上约为PC卡的一半大小,同时重量也更轻。

2.传输速度。ExpressCard模块采用的是优于PC卡PCI并行总线接口的串行数据接口,其在减少界面所需信号数目的同时提高了总线数据传送的速度。

3.成本。就其系统和机械设计方式, ExpressCard技术拥有更低的制造成本。

4.更省电。ExpressCard模块的功耗将比传统的PC卡更低。

5.易用性。由于省去了打开机箱的麻烦,ExpressCard模块使得为台式机安装新组件更为简便。而且使笔记本电脑与台式机之间能通过热插拔方式方便地交换外设。

两种尺寸规格及应用

ExpressCard模块的物理尺寸具有两种规格。一种是宽度为34mm的ExpressCard/34,另一种是宽度为54mm的 ExpressCard/54。它们的长度均为75mm,厚度均为5mm。主机系统可以为这两种宽度的模块中的任何一种提供相匹配的插槽。应该注意的是,34mm模块的一个好处就是它能兼容于54mm规格的插槽当中,而反过来却不行。

所有基于PC卡的应用均可采用ExpressCard插卡替代。较小的ExpressCard/34形状由于可以提供足够的电力,充分的热耗散及较少的占用面积所以具有更宽广的应用领域,包括:有线或无线通信、各种快闪存储卡、小型的(一英寸)光存储或磁存储、安全身份识别卡等应用。

模块的开发者们希望更多的采用体积较小的ExpressCard/34形状,但有一些应用则只能采用ExpressCard/54模块。如:智能卡和FC卡读卡机以及1.8英寸硬盘驱动器等。在这些应用中所采用的介质比ExpressCard/34模块所兼容的介质宽。随着芯片技术的发展,未来这些应用中的一些将有可能被移至更小的34模块内。比如电视调频卡及高性能通讯装置等。

提高台式机性能,开启密封计算时代

ExpressCard一旦同时在笔记本电脑和台式PC领域普及开来,将产生另一个很有意义的效应,那就是从此以后台式PC与笔记本电脑之间能方便地共享更多外设。

过去,尽管串口、并口、PS/2、USB等通用接口使普通外设能在笔记本电脑与台式PC之间共享,但这两类计算平台的高速I/O通道的“各自为战”局面--台式机PCI与笔记本电脑PC Card规格的不统一,使一些设备无法被两者所共享。例如,同时拥有台式PC和笔记本电脑的用户,为了接入有线或无线以太局域网,需要分别为它们购置PCI和PC Card两种规格的网卡;同样,一块昂贵的PCI规格电视接收卡,却无法从台式PC拿下来用在笔记本电脑上。这对用户而言经常会造成资金的浪费。

更糟糕的是,一旦存储设备采用PCI或PC Card规格(例如PC Card闪存、通过PC卡适配器的CF卡或记忆棒等),便无法在台式PC与笔记本电脑之间方便地交换保存其上的数据,对用户经常造成极大不便。

ExpressCard的采用会化解这种障碍。统一规范下的所有设备,可以方便地在两类计算平台之间自由插拔和交换,不但节省用户投资,而且为高速数据交换带来便利。

在ExpressCard技术产生之前,将热插拔PC卡技术大规模应用于台式机系统是不经济地,而现在ExpressCard插槽将给予台式机用户以笔记本电脑早已采用的“密封计算”功能。

种模块插入其系统来添加诸如存储器、有线或无线通讯卡及安全装置等硬件功能。

PCI Express是新一代的总线接口。早在2001年的春季,英特尔公司就提出了要用新一代的技术取代PCI总线和多种芯片的内部连接,并称之为第三代I/O总线技术。随后在2001年底,包括Intel、AMD、DELL、IBM在内的20多家业界主导公司开始起草新技术的规范,并在2002年完成,对其正式命名为PCI Express。它采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。

PCI Express总线是一种完全不同于过去PCI总线的一种全新总线规范,与PCI总线共享并行架构相比,PCI Express总线是一种点对点串行连接的设备连接方式,点对点意味着每一个PCI Express设备都拥有自己独立的数据连接,各个设备之间并发的数据传输互不影响,而对于过去PCI那种共享总线方式,PCI总线上只能有一个设备进行通信,一旦PCI总线上挂接的设备增多,每个设备的实际传输速率就会下降,性能得不到保证。PCI Express以点对点的方式处理通信,每个设备在要求传输数据的时候各自建立自己的传输通道,对于其他设备这个通道是封闭的,这样的操作保证了通道的专有性,避免其他设备的干扰。

在传输速率方面,PCI Express总线利用串行的连接特点将能轻松将数据传输速度提到一个很高的频率,达到远超出PCI总线的传输速率。PCI Express的接口根据总线位宽不同而有所差异,包括x1、x4、x8以及x16(x2模式将用于内部接口而非插槽模式),其中X1的传输速度为250MB/s,而X16就是等于16倍于X1的速度,即是4GB/s。与此同时,PCI Express总线支持双向传输模式,还可以运行全双工模式,它的双单工连接能提供更高的传输速率和质量,它们之间的差异跟半双工和全双工类似。因此连接的每个装置都可以使用最大带宽,PCI Express接口设备将有着比PCI设备优越的多的资源可用。

PCI Express最大的意义在于它的通用性,不仅可以让它用于南桥和其他设备的连接,也可以延伸到芯片组间的连接,甚至也可以用于连接图形芯片,这样,整个I/O系统将重新统一起来,将更进一步简化计算机系统,增加计算机的可移植性和模块化。

转载请注明:片头模版 » express模块的作用(Express的作用是什么啊)

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)

网友最新评论 ()