NodejsExpress框架菜鸟教程.docx
《NodejsExpress框架菜鸟教程.docx》由会员分享,可在线阅读,更多相关《NodejsExpress框架菜鸟教程.docx(4页珍藏版)》请在冰豆网上搜索。
NodejsExpress框架菜鸟教程
Node.jsExpress框架菜鸟教程
Node.jsExpress框架Express简介Express是一个简洁而灵活的node.jsWeb应用框架,提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。
使用Express可以快速地搭建一个完整功能的网站。
Express框架核心特性:
可以设置中间件来响应HTTP请求。
定义了路由表用于执行不同的HTTP请求动作。
可以通过向模板传递参数来动态渲染HTML页面。
安装Express安装Express并将其保存到依赖列表中:
$cnpminstallexpress--save以上命令会将Express框架安装在当前目录的node_modules目录中,node_modules目录下会自动创建express目录。
以下几个重要的模块是需要与express框架一起安装的:
body-parser-node.js中间件,用于处理JSON,Raw,Text和URL编码的数据。
cookie-parser-这就是一个解析Cookie的工具。
通过req.cookies可以取到传过来的cookie,并把它们转成对象。
multer-node.js中间件,用于处理enctype='multipart/form-data'(设置表单的MIME编码)的表单数据。
$cnpminstallbody-parser--save$cnpminstallcookie-parser--save$cnpminstallmulter--save安装完后,我们可以查看下express使用的版本号:
$cnpmlistexpress/data/www/node1express@4.15.2->/Users/tianqixin/www/node/node_modules/.4.15.2@express第一个Express框架实例接下来我们使用Express框架来输出'HelloWorld'。
以下实例中我们引入了express模块,并在客户端发起请求后,响应'HelloWorld'字符串。
创建express_demo.js文件,代码如下所示:
express_demo.js文件代码:
//express_demo.js文件varexpress=require('express');varapp=express();app.get('/',function(req,res){res.send('HelloWorld');})varserver=app.listen(8081,function(){varhost=server.address().addressvarport=server.address().portconsole.log('应用实例,访问地址为http:
//%s:
%s',host,port)})执行以上代码:
$nodeexpress_demo.js应用实例,访问地址为http:
//0.0.0.0:
8081在浏览器中访问http:
//127.0.0.1:
8081,结果如下图所示:
请求和响应Express应用使用回调函数的参数:
request和response对象来处理请求和响应的数据。
app.get('/',function(req,res){//--})request和response对象的具体介绍:
Request对象-request对象表示HTTP请求,包含了请求查询字符串,参数,内容,HTTP头部等属性。
常见属性有:
req.app:
当callback为外部文件时,用req.app访问express的实例req.baseUrl:
获取路由当前安装的URL路径req.body/req.cookies:
获得「请求主体」/Cookiesreq.fresh/req.stale:
判断请求是否还「新鲜」req.hostname/req.ip:
获取主机名和IP地址req.originalUrl:
获取原始请求URLreq.params:
获取路由的parametersreq.path:
获取请求路径req.protocol:
获取协议类型req.query:
获取URL的查询参数串req.route:
获取当前匹配的路由req.subdomains:
获取子域名req.accepts():
检查可接受的请求的文档类型req.acceptsCharsets/req.acceptsEncodings/req.acceptsLanguages:
返回指定字符集的第一个可接受字符编码req.get():
获取指定的HTTP请求头req.is():
判断请求头Content-Type的MIME类型Response对象-response对象表示HTTP响应,即在接收到请求时向客户端发送的HTTP响应数据。
常见属性有:
res.app:
同req.app一样res.append():
追加指定HTTP头res.set()在res.append()后将重置之前设置的头res.cookie(name,value[,option]):
设置Cookieopition:
domain/expires/httpOnly/maxAge/path/secure/signedres.clearCookie():
清除Cookieres.download():
传送指定路径的文件res.get():
返回指定的HTTP头res.json():
传送JSON响应res.):
传送JSONP响应res.location():
只设置响应的LocationHTTP头,不设置状态码或者closeresponseres.redirect():
设置响应的LocationHTTP头,并
且设置状态码302res.render(view,[locals],callback):
渲染一个view,同时向callback传递渲染后的字符串,如果在渲染过程中有错误发生next(err)将会被自动调用。
callback将会被传入一个可能发生的错误以及渲染后的页面,这样就不会自动输出了。
res.send():
传送HTTP响应res.sendFile(path[,options][,fn]):
传送指定路径的文件-会自动根据文件extension设定Content-Typeres.set():
设置HTTP头,传入object可以一次设置多个头res.status():
设置HTTP状态码res.type():
设置Content-Type的MIME类型路由我们已经了解了HTTP请求的基本应用,而路由决定了由谁(指定脚本)去响应客户端请求。
在HTTP请求中,我们可以通过路由提取出请求的URL以及GET/POST参数。
接下来我们扩展HelloWorld,添加一些功能来处理更多类型的HTTP请求。
创建express_demo2.js文件,代码如下所示:
express_demo2.js文件代码:
varexpress=require('express');varapp=express();//主页输出'Hello
World'app.get('/',function(req,res){console.log('主页
GET请求');res.send('HelloGET');})//POST请求
app.post('/',function(req,res){console.log('主页POST
请求');res.send('HelloPOST');})///del_user页面响应
app.get('/del_user',function(req,res)
{console.log('/del_user响应DELETE请求');res.send('删除页面');})///list_user页面GET请求app.get('/list_user',function(req,res){console.log('/list_userGET请求');res.send('用户列表页面');})//对页面abcd,abxcd,ab123cd,等响应GET请求app.get('/ab*cd',function(req,res){console.log('/ab*cdGET请求');res.send('正则匹配');})varserver=app.listen(8081,function(){varhost=server.address().addressvarport=server.address().portconsole.log('应用实例,访问地址为http:
//%s:
%s',host,port)})执行以上代码:
$nodeexpress_demo2.js应用实例,访问地址为http:
//0.0.0.0:
8081接下来你可以尝试访问http:
//127.0.0.1:
8081不同的地址,查看效果。
在浏览器中访问http:
//127.0.0.1:
8081/list_user,结果如下图所示:
在浏览器中访问http:
//127.0.0.1:
8081/abcd,结果如下图所示:
在浏览器中访问http:
//127.0.0.1:
8081/abcdefg,结果如下图所示:
静态文件Express提供了内置的中间件express.static来设置静态文件如:
图片,CSS,JavaScript等。
你可以使用express.static中间件来设置静态文件路径。
例如,如果你将图片,CSS,JavaScript文件放在public目录下,你可以这么写:
app.use(express.static('public'));我们可以到public/images目录下放些图片,如下所示:
node_modulesserver.jspublic/public/imagespublic/images/logo.png让我们再修改下'HelloWorld'应用添加处理静态文件的功能。
创建express_demo3.js文件,代码如下所示:
express_demo3.js文件代码:
varexpress=require('express');varapp=express();app.use(express.static('public'));app.get('/',function(req,res){res.send('HelloWorld');})varserver=app.listen(8081,function(){varhost=server.address().addressvarport=server.address().p