nodejs内置模块有哪些

JavaScript023

nodejs内置模块有哪些,第1张

一、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\n'+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+'\n'+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:\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':'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数据的方法,但是并没有直接获取上传文件。

Node.js非适用于Web发现论网站Web App都已经包括同部前端、数据库、业务模块、功能模块等等型项目使用Node.js零始进行Web发许型团队能够 胜任于型团队说现实候框架Web发利器于发说几乎必少何选择Node.js Web发框架呢

首先我必须要弄清楚我需要——

程序 or 框架

程序已经型应用需要搭建环境、添加配置运行起;框架则应用骨架需要添加数据模型、业务逻辑才能应用始提供服务

事实于Web发说程序框架区别越越模糊比几乎妇孺皆知Wordpress博客程序丰富插件及高度 自定义能够支持程度二发点比起些PHP框架并逊色我认重于提供服务掌握技术WordPress 程序没必要使用框架

惜由于Nodejs轻目前没WordPress程序目前Node.js发想做自想要作品框架必选择某些特定类型应用尝试些源程序比要用Nodejs做博客Hexo、Ghost等

Node.js Web框架哪些

Node.jsWeb框架API框架Web应用框架前者能够发RESTfulAPI者能发RESTful API包括模板、渲染等前端所准备功能

API框架使用场景跨平台应用提供统数据模型渲染由前端/客户端自行解决目前比较知名API框架

restify(文档、Github、NPM)

ActionHero.js(官网、Github、NPM)

LoopBack(官网、Github、NPM)

Frisby(官网、Github、NPM)

Fortune.js(官网、Github、NPM)

Web应用框架顾名思义打造Web应用所发框架两种风格Web应用框架

Sinatra风格另Rails风格SinatraRails都Ruby语言Web框架者影响力更更知名简单解释两种风格意思

Sinatra风格指高度配置注重发自由度代表性Nodejs Web框架:

Express(官网、Github、NPM)TJ神发Node.js官推荐

hapi(官网、Github、NPM)

koa.js(官网、Github、NPM)

flaliron(官网、Github、NPM)

total.js(官网、Github、NPM)

locomotive(官网、Github、NPM)

Rails风格则指重复自约定优于配置及严格遵循MVC结构发代表性框架:

Sails.js(官网、Github、NPM)

geddy(官网、Github、NPM)

CompoundJS(官网、Github、NPM) 原railswayjs

两种风格所谓谁优谁劣全凭使用者偏

两种Web框架外更型框架即全栈框架其代表MEAN

MEAN

MEAN指MongoDB+Express+Angular.js+Node.js组合包括运行环境、数据库、Web框架前端引擎称 全栈框架(Full-stack framework)其除Node.js外每都替换目标创建前端端全部使用javascriptWeb应用

由于框架完善性其称LAMP接班LAMP即PHP典型运行环境Linux+Apache+MySql+PHP量用于各种虚拟主机

MEAN看似庞事实要构建完整现代化Web应用特别SPA(单页面应用)几组件都难缺少并且其每项几乎都目前 情况佳选择用于习重始打造新Web应用非合适由于实际业务独特性能要替换其组件比用Mysql替换 MongoDB习其原理架构打造自类MEAN框架种选择

作团队说全栈框架MEAN基本足够目前数全栈框架包含项特性实拥实功能框架我称实框架

实框架

实框架(Real-time framework)指包含webSocket双向通信功能能够服务器客户端做实通信框架

服务端客户端自由通信需求直都由于HTTP协议本身局限性催Comet等变通即使离实相距甚远 Node.js兴起另HTML5技术webSocket渐渐熟突发现实通信变触手及于webSocket技术 Node.js量应用其知名模块socket.io各种全栈框架纷纷加入实特性应更广阔发需求

目前代表性实框架:

Meteor(官网、Github、NPM)

MEAN.io(官网、Github、NPM)

Derby(官网、Github、NPM)

SocketStream(官网、Github、NPM)

说实目前能看实通信应用场景其实其集于聊室、to-do、实图表、线游戏等领域其领域使用实特性没必要且服务器资源浪费目前否要采用实框架要看具体项目定

基本Node.js Web框架现状相信看于选择何种框架读者已经数吧再介绍容易搞混概念解释我选择

YEOMAN

第见词我MEAN联系事实截同两东西YEOMAN由YO(脚手架)、grunt(构建工具)、bower(包管理器)代表种工作流与框架发思维式完全同具体介绍见

YEOMAN能够框架达类似目都构建Web应用做准备要要采用YEOMAN则见仁见智我看习 YEOMAN本身需要少间并且定习门槛至少目前使用框架发相经济YEOMAN种模式推广再习 迟更何况定Node.js项目经验再习YEOMAN要轻松

事实我认YEOMAN种Generator+package Manager模式Node.js本身崇尚微模块 概念即论功能都模块化甚至模块要拆模块通搭积木式构建应用能够彻底解耦于容易调试 Javascript说助于定位修复应用问题Generator种理念催产物通选择同配置选项积木搭起 于种模式目前家处于实验急于进行实际应用

express

https://github.com/expressjs/express

http://www.yyyweb.com/ctools/demo.php?t=http%3A%2F%2Fexpressjs.com%2F&h=1000&c=&n=expressjs

koa

https://github.com/koajs/koa

http://www.yyyweb.com/ctools/demo.php?t=http%3A%2F%2Fkoajs.com%2F&h=20000&c=&n=koajs

egg(阿里开源的企业级 Node.js 框架,原型koa)

https://github.com/eggjs/egg

sails

https://github.com/balderdashy/sails/

http://www.yyyweb.com/ctools/demo.php?t=http%3A%2F%2Fsailsjs.org%2F%23!%2F&h=3500&c=&n=sailsjs

total

https://github.com/totaljs/framework

http://www.yyyweb.com/ctools/demo.php?t=https%3A%2F%2Fwww.totaljs.com%2F&h=2500&c=&n=totaljs