Express框架

1.Express框架

Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。

1)express框架特性:

① 提供了方便简洁的路由定义方式
② 对获取HTTP请求参数进行了简化处理
③ 对模板引擎支持程度高,方便渲染动态HTML页面
④ 提供了中间件机制有效控制HTTP请求
⑤ 拥有大量第三方中间件对功能进行扩展

2)步骤:

  ① 使用 npm install express 下载框架

  ② 创建网站服务器:express框架中已经有创建网站服务器的方法,我们不
  
  需要再使用原来引入http模块的createServer方法了;express() 就是
  
  创建网站服务器的方法
  
  ③ 创建路由:express()方法下有 get 和 post 方法用来响应;不再使

  用end 方法进行响应,使用send 方法:1.send方法内部会检测响应内容

  的类型; 2.send 方法会自动设置http状态码; 3.send方法会帮我们自
  
  动设置响应的内容类型及编码

2.中间件

中间件就是一堆方法,可以接收客户端发来的请求、可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理。

1)组成:express框架提供的用于接收请求的方法(中间件方法)和开发人员提供的用于处理请求的方法(请求处理函数)

2)一个请求可以设置多个中间件,默认情况下,请求从上到下依次匹配中间件,一旦匹配成功则终止匹配;此时,next方法可以使匹配继续,它将请求控制权交给下一个中间件,直到遇到结束请求的中间件(需要调用)

3).use中间件用法

  ① 接收请求,不区分请求方式,只要客户端发来请求就可以匹配到当前中间件;
  
  ② 由于中间件执行有顺序,这个中间件要定义在其他中间件前面;
  
  ③ 也可以接收某一路径的请求;第一个参数可以输入请求地址,只要走了这个请求地址就会执行

4)中间件应用

  1. 路由保护,客户端访问登录界面时,判断用户是否登录;如果用户未登录就会拦截,禁止进入登录页面

  2. 作网站维护、网页公告:放在最前面

  3. 自定义404页面、作访问不存在页面:需要放在最后面,status设置状态码

5)错误处理中间件

在程序执行的过程中,不可避免的会出现一些无法预料的错误,比如文件读取失败,数据库连接失败。

错误处理中间件是一个集中处理错误的地方。

Ⅰ.捕获到同步代码的错误:

  app.use((err,req,res,next) => { res.status(500).send('服务器方生未知错误')};

II.异步代码错误:

需要手动触发,当程序出现错误时,调用next()方法,并且将错误信息通过参数的形式传递给next()方法,即可触发错误处理中间件。

  app.get('/' , (req,res,next) => {
  fs.readFile("/file-does-not-exist" , (err,data) => {
  if(err) {
        next(err);
              }
        });
  });

6)捕获错误

在node.js中,异步API的错误信息都是通过回调函数获取的,支持Promise对象的异步API发生错误可以通过catch方法捕获。

try catch 可以捕获异步函数以及其他同步代码在执行过程中发生的错误,但是不能其他类型的API发生的错误。

异步函数捕获错误代码(同步异步都能获取)

  ① 调用 util 模块下的 promisify 

  ② 使用 promisify方法处理 fs.readFile

  ③ 使用异步函数,调用 readFile 方法

  ④ 使用 try、catch方法捕获错误

  ⑤ 在catch 中使用 next 方法手动触发错误信息

3.构建模块化路由

1)步骤:

基础代码:

  ① 构建网站服务器、监听

  ② 使用 express 框架下的 Router方法创建路由对象

  ③ 使用 .use 为路由对象匹配请求路径

  ④ 创建二级路由

*模块化:把不同代码放到不同文件中,并对他们进行导出与导入

2)GET参数的获取

Express框架中,req.query 可以获取GET参数,框架内部会将GET参数转换为对象并返回。

即不再使用原来的 url模块和 req.url了。

3)POST参数的获取

Express中接收post请求参数需要借助第三方包 body-parser。

  ① 引入body-parser模块(返回一个对象)

  ② 使用app.use 拦截所有请求并使用body-parser 的urlencoded 方法:检测请求内部是否包含请求参数,如果包含会接收并将它转换为对象类型

  ③ 再给 req这个请求参数添加 body 属性并将请求参数作为值赋值给req.body 属性

  ④ 最后在请求内部调用 next 方法将请求控制权交给下一个中间件

4)app.use方法里传递函数的调用

5)Express 路由参数

这是另一种传递以及获取get参数的方法,两种方式一样重要。

可定义请求地址需要传递哪些参数

请求下的 params 属性值存储的就是路由参数对象

6)静态资源的处理

在Express下有个内置的express.static可以方便地托管静态文件,例如img、css、javascript文件等。

  ① 使用 .use 拦截所有请求,再用 express下的static方法进行处理

  ② 由于static中的参数用到的是目录,所以引进 path 模块,使用 __dirname绝对路径

  ③ 拼接路径
posted @ 2020-12-24 13:31  黛黛318  阅读(88)  评论(0编辑  收藏  举报