Express是基于Node.js平台的web应用开发框架,它在Node.js的基础上扩展了web应用开发所需的基本功能,从而使我们开发Web应用更加方便快捷。
举个例子:
使用node.js在控制台上打印“hello server”
var http=require(' http ');var server=http . CreateServer(function(req,RES){ console . log(' hello server ');});server . listen(3000);这样,当我们需要处理各种请求(主要指GET和POST)时,就需要在createServer中封装的函数中编写处理所有请求类型的代码。
使用快速打印控制台上的“您好服务器”
var express=require(' express ');var app=express();http . CreateServer(app);//处理用户请求(路由)app.get ('/',function(){ console . log(' hello server ');})Express通过执行函数调用相应的方法来处理各种请求。这样方便快捷吗?
快递的API文档完整易懂,2010年1月3日陆续发布了几个版本。第三版和第四版的区别还是比较大的,主要体现在第三版的中间件基本继承了connect框架,而第四版的中间件是独立的,不再依赖connect框架。
说到中间件,官网阐述如下:
“Express是一个功能最少的web开发框架,完全由路由和中间件组成:本质上,一个Express应用是在调用各种中间件。”
这说明了中间件在Express开发中的重要性,所以这里我们就来总结一下中间件。
一、中间件结构
1、app . use([路径],函数)
Path:是路由的url,默认参数'/',这意味着在路由到此路径时使用此中间件
功能:中间件功能
这个中间件功能可以理解为功能(请求、响应、下一步)
这里的安装是指在使用第三方中间件时,需要先安装再使用。
二、中间件分类
1.内置中间件
Express.static是目前Express唯一内置的中间件。用于处理静态资源文件。
你什么意思?让我们运行代码,看看
//index . jsvar express=require(' express ');var app=express();app . use(express . static(_ _ dirname '/public ');启动服务:nodeindex.js。
在浏览器中访问:http://localhost :1234/show/public/index . html内容
在浏览器中,访问:http://localhost 33601234/hello . html显示的://public/hello . html。
2.定制中间件
在上面的中间件结构中,我们知道使用中间件时的第二个参数是一个Function。然而,要定制一个中间件,我们需要反转这个函数。
该函数有三个参数(req、res、next)。
当每个请求到达服务器时,nodejs为该请求创建一个请求对象,其中包含客户端提交的数据。同时会创建一个响应对象,主要负责将服务器的数据响应给客户端。最后一个参数next是一个方法,因为一个应用程序中可以使用多个中间件,如果要运行下一个中间件,那么上一个中间件必须运行next()。
好了,有了大致的了解,我将定义一些中间件来实现路由功能。
var express=require(' express ');var app=express();app.use(函数(请求、响应、下一个){ if(request . URL==='/'){ response . write head(200,{ ' Content-Type ' : ' text/plain ' });response.end('这是主页 n ');} else { next();}})app.use(function(request,response,next){ if(request . URL=='/' about '){ response . write head(200,{ ' Content-Type ' : ' text/plain ' });response.end('这是关于 n ');} else { next();}})app.use(function(request,response,next){ response.writeHead(404,{ ' Content-Type ' : ' text/plain ' });response.end('404未找到! n ');})app.listen(1234,‘localhost’);在浏览器中访问:http://localhost:1234/show这是家
在浏览器中访问:http://localhost :1234/关于展示这是关于
这样,使用中间件很容易实现路由功能。当然快递路由可以专门写,哈哈。
3.第三方中间件
关于第三方中间件,这里我们分析几个重要的、常用的,如果知道这些的用法,其他的都会实现。
正文解析器:解析正文中的数据,并将其保存为请求对象的正文属性。
Cookie解析器:解析客户端cookie中的数据,并将其保存为请求对象的cookie属性
快速会话:解析服务器生成的sessionid对应的会话数据,并将其保存为Request对象的会话属性
查询:这个中间件将一个查询字符串从URL转换成JS对象,并将其保存为Request对象的查询属性。这个中间件是在第四个版本中构建的,没有安装。
这里有一个例子。功能是用户是否可以登录,并在服务器上保存登录状态。
var express=require(' express ');//引入模板引擎var HBS=required(' express-handler ');var body parser=require(' body-parser ');var session=require(' express-session ');var app=express();//hbs是一个模板引擎app.engine('hbs ',HBS());app.set('view engine ',' HBS ');app.set('视图','模板');//从数据库中读取的数据为var user arr=[' wpzheng '];app . use(session({ secret : ' maizidu ' });app . use(BodyParser . URL encoded({ extended : true }));app.get('/'),函数(请求,响应,下一步){ var username=request . session . username;if(用户名){ response.send('hello '用户名);} else { response . render(' form ');}});app.post('/'),函数(请求,响应){ if(userar . indexof(request . body . username)=0){ request . session . username=request . body . username;} else { request . session . destroy();response对象的一个方法重定向response . redirect('/');});app.listen(1234,‘localhost’);如果会话不保存数据(测试时可以关闭服务,这样会话就没有价值了,每次向服务器发送请求,服务都会新建一个会话),它会自动跳转到登录页面。当您登录后(即有一个会话值),将直接显示用户名。
在本例中,涉及模板(hbs)和响应的方法(重定向)可以忽略。
第三,中间件的理解
最后,回到最初的问题,你明白什么是Express中间件吗?
结合上面解释中给出的例子,我们先来分析一下从在浏览器地址栏输入url到在客户端显示数据的过程中发生了什么。
浏览器向服务器发送请求后,服务器直接以定位属性的方式获取请求携带的过去数据(包括用户输入的数据和浏览器本身的数据信息)。中间必须有一个函数对已经处理好的数据进行分类处理,最后让请求对象调用使用。是的,这个数据处理功能就是我们要说的中间件。因此,中间件可以总结以下几点:
1.封装一些函数来处理一个完整的事件。
2.需要安装非内置中间件,需要到文件后才能运行。
3.封装了一些可能复杂但必须通用的功能。
下载以上所有代码:https://github.com/wenpingzheng/express-js.git
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。