24
1- 说明 http express 和 koa 的路由参数分别怎么获取:
http:
1 get:url.parse(req.url,true).query 2 post: 3 var queryString=require('queryString') 4 var bodyParse='' 5 req.on('data',(params)=>{ 6 bodyParse+=params 7 }) 8 9 req.on('end',(params)=>{ 10 let {name}=queryString.parse(bodyParse) 11 res.end(name) 12 })
express:
1 get: 2 req.query.xxx 3 post: 4 var bodyParser=require('body-parser') 5 app.use(bodyParser.urlencoded({extends:false})) 6 app.post('/add',(req,res)=>{ 7 let {name}=req.body 8 res.send(name) 9 })
koa:
1 koa: 2 get: 3 ctx.query.xxx 4 post: 5 var bodyParser=require('body-parser') 6 app.use(bodyParser()) 7 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 的洋葱圈模型:
1 const Koa = require('koa'); 2 const app = new Koa(); 3 4 app.use(async (ctx, next) => { 5 console.log(1); 6 await next(); 7 console.log(6); 8 }); 9 10 app.use(async (ctx, next) => { 11 console.log(2); 12 await next(); 13 console.log(5); 14 }); 15 16 app.use(async (ctx, next) => { 17 console.log(3); 18 ctx.body = "hello world"; 19 console.log(4); 20 }); 21 22 app.listen(3000, () => { 23 console.log('listenning on 3000'); 24 });
最后输出 为 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也是被动的,不能主动发起。
浙公网安备 33010602011771号