NodeJS框架Express学习总结

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

EXPRESS分享:基于Node.js平台,快速、开放、极简的web开发框架YouShiWeb应用Express是一个基于Node.js平台的极简、灵活的web应用开发框架,它提供一系列强大的特性,帮助你创建各种Web和移动设备应用。1API丰富的HTTP快捷方法和任意排列组合的Connect中间件,让你创建健壮、友好的API变得既快速又简单。2性能Express不对Node.js已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的基本功能。3优势01基本路由路由(Routing)是由一个URI(或者叫路径)和一个特定的HTTP方法(GET、POST等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。路由方法//对网站首页的访问返回HelloWorld!字样app.get('/',function(req,res){res.send('HelloWorld!');});//网站首页接受POST请求app.post('/',function(req,res){res.send('GotaPOSTrequest');});///user节点接受PUT请求app.put('/user',function(req,res){res.send('GotaPUTrequestat/user');});路由路径和请求方法一起定义了请求的端点,它可以是字符串、字符串模式或者正则表达式。路由路径//匹配根路径的请求app.get('/',function(req,res){res.send('HelloWorld!’)});//匹配/about路径的请求app.get('/about',function(req,res){res.send('GotaPOSTrequest');});//匹配acd和abcdapp.get('/ab?cd',function(req,res){res.send('ab?cd');});//匹配abcd、abbcd、abbbcd等app.get('/ab+cd',function(req,res){res.send('ab+cd');});可以为请求处理提供多个回调函数,其行为类似中间件。路由句柄有多种形式,可以是一个函数、一个函数数组,或者是两者混合。路由句柄使用一个回调函数处理路由:app.get('/example/a’,function(req,res){res.send('HellofromA!');});varcb0=function(req,res,next){console.log('CB0');next();}varcb1=function(req,res,next){console.log('CB1');}app.get('/example/c',[cb0,cb1]);使用数组处理路由:使用多个回调函数处理路由(记得指定next对象):app.get('/example/b',function(req,res,next){console.log('responsewillbesentbythenextfunction...');next();},function(req,res){res.send('HellofromB!');});响应方法下表中响应对象(res)的方法向客户端返回响应,终结请求响应的循环。如果在路由句柄中一个方法也不调用,来自客户端的请求会一直挂起。app.route()可使用app.route()创建路由路径的链式路由句柄。由于路径在一个地方指定,这样做有助于创建模块化的路由,而且减少了代码冗余和拼写错误。app.route('/book').get(function(req,res){res.send('Getarandombook');}).post(function(req,res){res.send('Addabook');}).put(function(req,res){res.send('Updatethebook');});02通过Express内置的express.static可以方便地托管静态文件,例如图片、CSS、JavaScript静态文件利用Express托管静态文件PresentationName将静态资源文件所在的目录作为参数传递给express.static中间件就可以提供静态资源文件的访问了。例如,假设在public目录放置了图片、CSS和JavaScript文件,你就可以:app.use(express.static('public'));如果你的静态资源存放在多个目录下面,你可以多次调用express.static中间件:app.use(express.static('public'));app.use(express.static('files'));如果你希望所有通过express.static访问的文件都存放在一个“虚拟(virtual)”目录(即目录根本不存在)下面,可以通过为静态资源目录指定一个挂载路径的方式来实现,如下所示:app.use('/static',express.static('public’));是一个自身功能极简,完全是由路由和中间件构成一个的web开发框架:从本质上来说,一个Express应用就是在调用各种中间件。中间件中间件中间件(Middleware)是一个函数,它可以访问请求对象(requestobject(req)),响应对象(responseobject(res)),和web应用中处于请求-响应循环流程中的中间件,一般被命名为next的变量。中间件中间件应用级中间件应用级中间件绑定到app对象使用app.use()和app.METHOD(),其中,METHOD是需要处理的HTTP请求的方法,例如GET,PUT,POST等等,全部小写。例如:varapp=express();//没有挂载路径的中间件,应用的每个请求都会执行该中间件app.use(function(req,res,next){console.log('Time:',Date.now());next();});//挂载至/user/:id的中间件,任何指向/user/:id的请求都会执行它app.use('/user/:id',function(req,res,next){console.log('RequestType:',req.method);next();});//路由和句柄函数(中间件系统),处理指向/user/:id的GET请求app.get('/user/:id',function(req,res,next){res.send('USER');});中间件应用级中间件如果需要在中间件栈中跳过剩余中间件,调用next('route')方法将控制权交给下一个路由。//一个中间件栈,处理指向/user/:id的GET请求app.get('/user/:id',function(req,res,next){//如果userid为0,跳到下一个路由if(req.params.id==0)next('route');//否则将控制权交给栈中下一个中间件elsenext();//},function(req,res,next){//渲染常规页面res.render('regular');});//处理/user/:id,渲染一个特殊页面app.get('/user/:id',function(req,res,next){res.render('special');});中间件路由级中间件varrouter=express.Router();//没有挂载路径的中间件,通过该路由的每个请求都会执行该中间件router.use(function(req,res,next){console.log('Time:',Date.now());next();});//一个中间件栈,显示任何指向/user/:id的HTTP请求的信息router.use('/user/:id',function(req,res,next){console.log('RequestURL:',req.originalUrl);next();},function(req,res,next){console.log('RequestType:',req.method);next();});路由级中间件和应用级中间件一样,只是它绑定的对象为express.Router()。中间件错误处理中间件app.use(function(err,req,res,next){console.error(err.stack);res.status(500).send('Somethingbroke!');});错误处理中间件有4个参数,定义错误处理中间件时必须使用这4个参数。即使不需要next对象,也必须在签名中声明它,否则中间件会被识别为一个常规中间件,不能处理错误。中间件错误处理中间件app.use(function(err,req,res,next){console.error(err.stack);res.status(500).send('Somethingbroke!');});错误处理中间件有4个参数,定义错误处理中间件时必须使用这4个参数。即使不需要next对象,也必须在签名中声明它,否则中间件会被识别为一个常规中间件,不能处理错误。中间件第三方中间件varexpress=require('express');varapp=express();varcookieParser=require('cookie-parser');//加载用于解析cookie的中间件app.use(cookieParser());通过使用第三方中间件从而为Express应用增加更多功能。安装所需功能的node模块,并在应用中加载,可以在应用级加载,也可以在路由级加载。下面的例子安装并加载了一个解析cookie的中间件:cookie-parser$npminstallcookie-parser04脚手架搭建脚手架搭建PresentationName安装npminstall-gexpress-generator模板引擎express-etestEjsWebApp安装依赖项npminstall谢谢观看

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功