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也是被动的,不能主动发起。