Koa 使用小技巧

promise

koa

  • 代码编写上避免了多层的嵌套异步函数调用 async await来解决异步
    • async await 需要依赖于promise
  • 更轻… 减少了内置的中间件 express.static处理静态资源的内置中间件 express.Router() 路由
  • 启动步骤
    1. 引入Koa构造函数对象 const Koa = require('koa')
    2. 创建服务器示例对象 const app = new Koa();
    3. 配置中间件 app.use(做什么?)
    4. 监听端口启动服务器 app.listen(8888);
  • 做什么? (函数参数说明)
    • context上下文对象: 该对象类似原生http中的 req + res
      • 该对象的req,res属性也存在,就是原生没有包装过的req,res
      • 简单说: context 对象就是从请求到响应 过程中的一个描述对象
    • next函数:调用下一个中间件 (当前任务完成可以执行下一个任务)
  • request(请求对象): 其中包含客户端请求的相关信息
  • response(响应对象): 包含响应数据的具体操作
request常用属性
  • ctx.request.url(ctx.url)
  • ctx.request.method(ctx.method)
  • ctx.request.headers(ctx.headers)
response常用属性
  • ctx.response.set(ctx.set) 函数:参数key,val

  • ctx.response.status(ctx.status)

  • ctx.response.body(ctx.body)

小结
  • 以上所有使用的属性,都可以简写 ctx.xxx
  • 使用async await的应用场景,如果你出现了异步操作,使用其, 后一个中间件使用了async,前后都使用
  • 三主角: 函数前面 async, 内部才能await,要想await能有用,就用promise包裹他
第三方中间件
  • 处理请求体 koa-bodyparser

    • 非GET请求,比如说post请求 ,包括表单提交的form内的数据,都能轻松获取
    • ctx.request.body 获取form中的数据
  • 处理路由 koa-router

  • koa-bodyparser是解析请求体数据的,koa-router中可以通过ctx.query||ctx.params获取url上的参数

  • 处理静态资源 koa-static

  • 渲染页面 koa-art-template

    • koa与视图通信的对象 ctx.state
  • session中间件 koa_session

    • sign:true 会生成一个关于cookie数据保障不被修改的签名,如果数据改了,但是签名还是之前的状态,就说明数据不安全
    • app.keys 必须要,内部通过该值进行标识或者说计算
    • 操作session ctx.session.xxx
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用koa.io模块来将socket.io与koa框架结合使用。首先,您需要安装koa.io模块,可以通过运行以下命令进行安装:`$ npm install koa.io --save`。 接下来,在您的代码中引入koa.io模块,并创建一个koa应用实例: ```javascript var koa = require('koa.io'); var app = koa(); ``` 然后,您可以使用app.use()方法来添加中间件到koa应用中。如果您想要使用socket.io的功能,您可以使用koa.io模块提供的中间件来扩展socket对象。例如: ```javascript app.use(io => { io.on('connection', socket => { // 处理socket连接事件的逻辑 }); }); ``` 这样,您就可以在koa应用中使用socket.io相关功能了。您可以在连接事件处理中编写逻辑来处理socket连接事件。例如,可以使用`socket.emit()`方法发送消息给客户端,或者使用`socket.on()`方法监听客户端发送的消息。 希望以上信息对您有帮助。如果您还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [koa.io:结合 koa 和 socket.io 的实时 web 框架](https://download.csdn.net/download/weixin_42133452/19183830)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue-koa框架下的socket组播](https://blog.csdn.net/elister_an/article/details/108850459)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [nodejs koa2结合socket.io踩坑记录,中文文档](https://blog.csdn.net/qq_31967569/article/details/104119481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值