express, 是nodejs的一个很流行的框架,楼主现在的公司node层用的就是这个卡框架,所以今天看了文档准备学习一下。
我的个人理解是express是一个处于真实后端和前端之间的服务器,主要任务是处理前端的request,和后端返回的response。
个人经验比较少,体会到的node层的好处主要是使职责更加分明,减少浏览器本身的压力。同时隔离了前后端,大幅度降低前后端耦合度。比如某个场景下后端返回的数据需要处理后前端才可以直接使用,这时候node层就可以发挥作用了。
几个常用函数
app.get/post/put/delete
结构: app.get(url,callback)
URL是路由,当目前请求路由和此路由匹配时,则有callback进行处理。
app.use(url,callback)
可以理解为在发送请求的过程中mount了一个中间件,发送请求=>use中的cb=>app.get/post等中的callback。该函数中的url不是全等的url 只要是以该url开头的请求都会被这个callback函数处理。当url参数不存在时,即app.use(callback),则是对所有请求都进行处理。
req
即request, 表示客户端发出的请求数据。大家都知道,浏览器发送的请求中包括三个部分,协议部分,包括所用协议和协议版本,请求头,请求体。而express中的req对象,是将这三个部分中的内容进行抽取和再包装。
常用的几个属性
req.params 是app.get/post等函数中url的参数部分,比如url是“/demo/:id/about”, id就可以通过params对象取到,方法是,req.params.id。
req.query 请求路由中的queryString,比如“/demo?name=tony&lang=EN”,则。req.query为{name:tony,lang:EN}
req.body 即http请求的请求体
req.originalUrl. URL完整体,包括querystring?
req.baseUrl 需要进一步了解
req.path 需要进一步了解
req.protocol. 协议,小写字母,比如:“http”
res
返回给浏览器的对象
res.status() 设置响应的状态码
res.json(data) 将数据转为json格式返回给前端。
总之,express是围绕一次请求展开的,要好好了解express需要认真研究下http请求。