24

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

   http:  

get:url.parse(req.url,true).query
    post:
      var queryString=require('queryString')
      var bodyParse=''
      req.on('data',(params)=>{
        bodyParse+=params
      })
      
      req.on('end',(params)=>{
        let {name}=queryString.parse(bodyParse)
        res.end(name)
      })

    express:

get:
        req.query.xxx
      post:
        var bodyParser=require('body-parser')
        app.use(bodyParser.urlencoded({extends:false}))
        app.post('/add',(req,res)=>{
          let {name}=req.body
          res.send(name)
        })

  koa: 

koa:
    get:
      ctx.query.xxx
    post:
      var bodyParser=require('body-parser')
      app.use(bodyParser())
      ctx.request.body.xxx

2-简单说明动态路由:

  在.js文件中设置路由,通过ctx.params方式获取id

router.get('/content/:id',async (ctx)=>{
    console.log(ctx.params);
})

  比如输入http://localhost:8000/content/2,可以获得
  console.log(ctx.params); //{ id: ‘2’ }

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

写next()程序未执行玩继续往下执行,未写则程序停止执行.

4-简述 koa 的洋葱圈模型:

const Koa = require('koa');
const app = new Koa();

app.use(async (ctx, next) => {
    console.log(1);
    await next();
    console.log(6);
});

app.use(async (ctx, next) => {
    console.log(2);
    await next();
    console.log(5);
});

app.use(async (ctx, next) => {
    console.log(3);
    ctx.body = "hello world";
    console.log(4);
});

app.listen(3000, () => {
    console.log('listenning on 3000');
});

最后输出 为 1,2 ,3,4,5,6在await 实现next()执行到下一步
跳过还未处理的代码,只有下一步完成时候再开始进行处理本级需要处理的代码

5-扩展:了解 websocket:

WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)
首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已.

有交集,但是并不是全部。

有交集,但是并不是全部。
另外Html5是指的一系列新的API,或者说新规范,新技术。Http协议本身只有1.0和1.1,而且跟Html本身没有直接关系。。
通俗来说,你可以用HTTP协议传输非Html数据,就是这样=。=
再简单来说,层级不一样。

   Websocket是什么样的协议,具体有什么优点:

   首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说。
简单的举个例子吧,用目前应用比较广泛的PHP生命周期来解释。
1) HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。
在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。
但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。

原文地址:https://www.cnblogs.com/xuexiaotian/p/14496711.html