nodejs内置模块有哪些

一、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('http://localhost');//创建本地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('http://localhost');因为端口为80,所有这里可以不端口号
socket.on('news',function (data){}//客户端接收news消息成功后,发送my other event消息到服务端,发送的消息内容为json对象{my:'data'}

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

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

执行完毕后可能会报错:catnot find module socket.io,说明你的socket.IO没有安装,或已经安装并配置为全局,但你的安装路径并没有配置到在path中,所有无法引用。
你可以选择配置path,或者安装到项目内。这里建议安装到你的项目目录下,而不是简单粗暴的配置为全局。先卸载npm uninstall socket.io 进入指定目录后安装node index_server.js

socket.io详细请参阅    http://cnodejs.org/topic/50a1fcc7637ffa4155b5a264

五、request模块

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

安装:

npm install requset

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

get和post的区别

get:

1.使用get向服务器发出和接收的请求会附在url之后。类似:http://www.baidu.com?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
'+req.method);
}).listen(1337,"127.0.0.1");

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

var request=require('request');
request.get("http://127.0.0.1:1337",function(error,response,result){
console.log(result);
});

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

执行后的结果如下

hello world
GET

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

http://127.0.0.1:1337 返回的结果就是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+'
'+req.method);
});
}).listen(1400,"127.0.0.1");

然后再新建一个request_post.js

var request=require("request");
request.post('http://127.0.0.1:1400',{form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})

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

D:
odejs\srcequest>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':'http://127.0.0.1:1400',form:{'name':'ermu','book':'node.js'}},function (error,response,result) {
console.log(result);
})

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

六、  Formidable模块

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

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



  • 濡備綍鍩轰簬nodejs寮鍙戜竴涓懡浠よ宸ュ叿
    绛旓細绠鍗曡В閲婁笅杩欎袱琛屼唬鐮侊紝绗竴琛屾槸Unix/Linux鐨勫啓娉曪紝绠鍗曠殑璇村氨鏄憡璇夌▼搴忎娇鐢ㄤ粈涔堜笢瑗挎潵瑙i噴涓嬮潰鐨勪唬鐮侊紝姝ゅ灏辨槸鍛婅瘔绯荤粺浣跨敤node鏉ユ墽琛屼笅闈㈢殑浠g爜銆傜浜岃灏辩畝鍗曚簡锛屾墽琛屽姞杞../zwj.js妯″潡锛屽苟杩斿洖銆備篃灏辨槸璇达紝缁忚繃杩欒浠g爜涔嬪悗锛屾垜浠殑鍛戒护琛屽皬宸ュ叿鐨勫叿浣撳姛鑳藉氨鍙互浜ょ粰zwj.js杩欎釜鏂囦欢鍘绘帶鍒朵簡銆傞偅涔...
  • node.js 妯″潡 涓轰粈涔堟枃浠朵腑鐨勫彉閲忎笉鏄叏灞鐨
    绛旓細鍏ㄥ眬鐨勫畨瑁呮槸渚涘懡浠よ浣跨敤鐨勶紝浣跨敤鍏ㄥ眬鏂瑰紡瀹夎鍚庯紝鐢ㄦ埛灏卞彲浠ュ湪鍛戒护琛屼腑鐩存帴杩愯璇ョ粍浠跺寘鏀寔鐨勫懡浠わ紝浼樼偣锛氬彲浠ユ彁楂樼▼搴忕殑澶嶇敤搴︼紝閬垮厤鍚屾牱鐨勫唴瀹瑰瓨鍦ㄥ浠藉壇鏈紱缂虹偣锛氶毦浠ュ鐞嗕笉鍚岀殑鐗堟湰渚濊禆銆傝繖閲岀殑require()鏄node.js鍐呯疆鍑芥暟锛岀敤鏉ュ紩鍏ュ叾浠妯″潡浠ュ浠g爜涓皟鐢ㄦā鍧楃殑鍑芥暟鍜屽彉閲忥紝榛樿涓媙ode.js浼氬湪NODE...
  • nodejs 杩樻槸python?
    绛旓細鏍风殑鏄庢樉鍙瘮鐘跺喌銆2.Node.js姣旇緝Python鏈変互涓嬪埄鐩娿傚揩锛nodejs姣攑ython蹇湪浜哣8寮曟搸鍜屽紓姝ュ疄琛屻侼ode.js鏍规嵁V8寮曟搸鍜屽紓姝ョ綉缁滃拰IOLibrary锛屽拰Python鐨凾wisted寰堝儚锛屼笉鍚岀殑鏄疦ode.js鐨別ventloop鏄湪寰堝簳灞傜殑锛屾垜浠兘鐭ラ亾瓒婃帴杩 搴曞眰鍔熺巼瓒婇珮銆傚叾浠杗pm浣滀负Node.js鐨勫畼鏂筽ackagemanagement锛屾眹闆嗕簡鏁翠釜绀惧尯鏈...
  • 鈥滀綆浠g爜鈥濇槸浠涔 ?
    绛旓細浣庝唬鐮佹槸鎸囦綆浠g爜寮鍙戝钩鍙帮紝浣庝唬鐮佸紑鍙戝钩鍙帮紙LCDP锛夋槸鏃犻渶缂栫爜锛0浠g爜锛夋垨閫氳繃灏戦噺浠g爜灏卞彲浠ュ揩閫熺敓鎴愬簲鐢ㄧ▼搴忕殑寮鍙戝钩鍙般傞氳繃鍙鍖栬繘琛屽簲鐢ㄧ▼搴忓紑鍙戠殑鏂规硶锛堝弬鑰冨彲瑙嗙紪绋嬭瑷锛夛紝浣垮叿鏈変笉鍚岀粡楠屾按骞崇殑寮鍙戜汉鍛樺彲浠ラ氳繃鍥惧舰鍖栫殑鐢ㄦ埛鐣岄潰锛屼娇鐢ㄦ嫋鎷界粍浠跺拰妯″瀷椹卞姩鐨勯昏緫鏉ュ垱寤虹綉椤靛拰绉诲姩搴旂敤绋嬪簭銆備綆浠g爜寮鍙戝钩鍙...
  • web鍓嶇寮鍙戦渶瑕佸浜涗粈涔
    绛旓細鍓嶇蹇呭 鎬ц兘浼樺寲銆佺増鏈帶鍒跺伐鍏枫妯″潡鍖栥侀」鐩瀯寤哄伐鍏 闃舵7.楂樼骇妗嗘灦 React妗嗘灦鍩烘湰浣跨敤銆丷eact妗嗘灦杩涢樁銆乂ue妗嗘灦鍩烘湰浣跨敤銆乂ue妗嗘灦杩涢樁銆乂ue婧愮爜鍒嗘瀽 闃舵8.灏忕▼搴 鍘熺敓灏忕▼搴忓叆闂ㄣ佸師鐢熷皬绋嬪簭API浣跨敤銆佸皬绋嬪簭妗嗘灦Mpvue web鍓嶇瀛︿範鍐呭 杩欎釜瀛︿範鐨8涓樁娈垫寜鐓ч『搴忓涔犲氨鏄彲浠ョ殑锛屽笇鏈涘彲浠ュ府鍒颁綘銆
  • js闄や簡鏈塉Query妗嗘灦浠ュ,杩樻湁鍝簺寮哄ぇ鐐圭殑妗嗘灦,鎴栬呮瘮杈冨疄鐢ㄧ殑涔熷彲浠...
    绛旓細moo.fx鏄竴涓秴绾ц交閲忕骇鐨刯avascript鐗规晥搴擄紙7k锛,鑳藉涓巔rototype.js鎴杕ootools妗嗘灦涓璧蜂娇鐢ㄣ傚畠闈炲父蹇佹槗浜庝娇鐢ㄣ佽法娴忚鍣ㄣ佺鍚堟爣鍑嗭紝鎻愪緵鎺у埗鍜屼慨鏀逛换浣旽TML鍏冪礌鐨凜SS灞炴э紝鍖呮嫭棰滆壊銆傚畠鍐呯疆妫鏌ュ櫒鑳藉闃叉鐢ㄦ埛閫氳繃澶氭鎴栫柉鐙傜偣鍑绘潵鐮村潖鏁堟灉銆俶oo.fx鏁翠綋閲囩敤妯″潡鍖栬璁★紝鎵浠ュ彲浠ュ湪瀹冪殑鍩虹涓婂紑鍙戜綘闇瑕佺殑...
  • 鏈嶅姟鍣ㄧ▼搴忔簮浠g爜鍒嗘瀽涔嬩簩:php-fpm
    绛旓細php-fpm鎺ュ彛閲囩敤fastcgi 闈炲父閬楁喚锛宲hp-fpm鍜宖astcgi瀹屽叏缁戝畾浜嗭紝鏃犳硶鐙珛浣跨敤 銆傚彧鑳介儴缃插湪鏀寔http-fcgi鍗忚杞崲绋嬪簭鑳屽悗(nginx锛夈傚叾瀹炲彲浠ヨ冭檻鍦╬hp-fpm浠g爜鍖呴噷闈㈠紩鍏ttp鍗忚鏀寔锛岃繖鏍穚hp-fpm鍙互鐙珛杩愯锛岃nodejs鏃犺瘽鍙 php-fpm绛夊悓浜嶰penResty OpenResty鏄竴涓浗浜哄紑鍙戠殑nginx妯″潡锛屽氨鏄湪n...
  • web鍓嶇瀛︿範鍒鍝簺闃舵?
    绛旓細閽堝绗竴鏂归潰鐨勮兘鍔涳紝闇瑕佸涔狅細JavaScript鏍规湰鐗规晥鍙互瀹屾垚鍥剧墖杞挱銆佹嫋鎷姐佹斁澶ч暅绛夊父瑙佺綉椤电壒鏁堛備笁銆佸墠绔紑鍙戣繘闃1銆佽繍鐢╦Query銆丅ootstrap绛夋鏋跺紑鍙戞潅涔辩殑浜や簰鍔熻兘涓庝綔鐢紱2銆佸涔爒ue.js 绛夋鏋舵潵瀹屾垚涓浜涘ぇ鍨嬬殑椤圭洰銆傛劅鍏磋叮鐨勮瘽鐐瑰嚮姝ゅ锛屽厤璐瑰涔犱竴涓嬫兂浜嗚В鏇村鏈夊叧web鍓嶇瀛︿範鐨勭浉鍏充俊鎭紝鎺ㄨ崘鍜ㄨ銆...
  • nodejs 鍔犺浇妯″潡涓煎彂鐢熷彉鍖栨庝箞寰楀埌
    绛旓細浣犲彲浠ユ妸浠g爜鏀惧埌node_modules閲屻傚洜涓轰綘鎯宠鐨勬槸锛氬鏋滄ā鍧楀悕涓嶆槸璺緞锛屼篃涓嶆槸鍐呯疆妯″潡锛Node灏嗚瘯鍥惧幓褰撳墠鐩綍鐨刵ode_modules鏂囦欢澶归噷鎼滅储銆傚鏋滃綋鍓嶇洰褰曠殑node_modules閲屾病鏈夋壘鍒帮紝Node浼氫粠鐖剁洰褰曠殑node_modules閲屾悳绱紝杩欐牱閫掑綊涓嬪幓鐩村埌鏍圭洰褰曘
  • 鍒濆鑰呭浣曡繀閫熷涔爓eb鍓嶇寮鍙?
    绛旓細鎬ц兘浼樺寲銆佺増鏈帶鍒跺伐鍏枫妯″潡鍖栥侀」鐩瀯寤哄伐鍏 闃舵7.楂樼骇妗嗘灦 React妗嗘灦鍩烘湰浣跨敤銆丷eact妗嗘灦杩涢樁銆乂ue妗嗘灦鍩烘湰浣跨敤銆乂ue妗嗘灦杩涢樁銆乂ue婧愮爜鍒嗘瀽 闃舵8.灏忕▼搴 鍘熺敓灏忕▼搴忓叆闂ㄣ佸師鐢熷皬绋嬪簭API浣跨敤銆佸皬绋嬪簭妗嗘灦Mpvue web鍓嶇瀛︿範鏂瑰悜 杩欎釜瀛︿範鐨勮矾绾胯矾浣犳寜鐓т粠涓婂埌涓嬭繖涓『搴忓涔犲氨鍙互鐨勶紝涓嶇鏄姤鍩硅鐝繕鏄...
  • 扩展阅读:为什么没人用nodejs做后端 ... nodejs微服务框架 ... 怎样配置nodejs环境 ... 安装nodejs环境变量配置 ... magisk模块仓库官网下载 ... lspoesd模块下载 ... 现有的nodejs框架 ... nodejs网站项目实例 ... 安装nodejs步骤和环境配置 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网