简单说明动态路由

1、说明 http express 和 koa 的路由参数分别怎么获取

http:
  app.get('/add/:name/:age/:sex',function(req,res){
  res.send(req.params);
  });

 

express:
  router.get('/student/:id',function(req, res, next){
  var id = req.params.id;
  })

 

koa:
  ctx.request.query
  ctx.query

2、简单说明动态路由

动态获取路由地址,在对特定地址经行路由
  //动态路由
  //index没有参数,导致路由无法匹配
  //:占位符

  // 接收请求
  app.get('/index/:id/:name/:age', (req, res) => {
  console.log(req.params)
  //get请求参数
  res.send(req.params)
  });

3、说明 express 和 koa 的中间件的使用

  express中间件一个接一个的顺序执行, 通常会将 response 响应写在最后一个中间件中

  koa2的中间件是通过 async await 实现的,中间件执行顺序是“洋葱圈”模型。中间件之间通过next函数联系,当一个中间件调用 next() 后,会将控制权交给下一个中间件, 直到下一个中间件不再执行 next() 后, 将会沿路折返,将控制权依次交换给前一个中间件。
4、简述 koa 的洋葱圈模型

  

 1 const koa = require('koa') ;
 2 const Router = require('koa-router');
 3 // 创建路由对象
 4 var router = require('koa-router')() ;
 5 
 6 const app = new koa() ;
 7 
 8 // 洋葱圈模型
 9 app.use(async (ctx , next) => {
10     console.log('开始执行第一个中间件') ;
11     await next() ; //第一个执行完先挂起来去执行第二个中间件
12     console.log('第一个中间件执行完成') ;
13 })
14 app.use(async (ctx , next) => {
15     console.log('开始执行第二个中间件') ;
16     await next() ;
17     console.log('第二个中间件执行完成') ;
18 })
19 app.use(async (ctx , next) => {
20     console.log('开始执行第三个中间件') ;
21     await next() ;
22     console.log('第三个中间件执行完成') ;
23 })
24 
25 // 路由请求
26 router.get('/',async (ctx) => {
27     ctx.body = 'hello koa ' ;
28 })
29 
30 
31 // 启用路由
32 app.use(router.routes())
33     .use(router.allowedMethods())
34 
35 app.listen(3000,()=>{
36     console.log('服务器已启动,3000端口监听中... ') ;       
37 })

5、扩展:了解 websocke

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

  WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

  在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

  创建 WebSocket 对象

  var Socket = new WebSocket(url, [protocol] );
  以上代码中的第一个参数 url, 指定连接的 URL。第二个参数 protocol 是可选的,指定了可接受的子协议。

  WebSocket 属性
  Socket.readyState   只读属性 readyState 表示连接状态,可以是以下值:
              0 - 表示连接尚未建立。
              1 - 表示连接已建立,可以进行通信。
              2 - 表示连接正在进行关闭。
              3 - 表示连接已经关闭或者连接不能打开。
  Socket.bufferedAmount   只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。

  WebSocket 事件
  Socket.onopen   连接建立时触发
  Socket.onmessage   客户端接收服务端数据时触发
  Socket.onerror   通信发生错误时触发
  Socket.onclose   连接关闭时触发

  WebSocket 方法
  Socket.send()   使用连接发送数据
  Socket.close()   关闭连接

posted @ 2021-03-07 21:33  gaobz  阅读(152)  评论(0)    收藏  举报