1.Koa是什么?

基于nodejs平台的下一代web开发框架

1.Express原班人马打造,更精简

2.Async+await处理异步

3.洋葱圈型的中间件机制

新建一个koa项目

1.打开cmd,cd到指定目录下

mkdir koa-demo
cd koa-demo
npm init //然后一直默认回车
cnpm install koa --save

2.在vscode中打开koa-demo项目,新建server.js

const Koa=require('koa')
const app=new Koa() app.use(async(ctx,next)=>{
ctx.body='hello koa'
}) app.listen(3000)

在cmd中,执行node server.js

3.在浏览器,访问http://localhost:3000/

代码疑问

1.ctx是什么 封装了request和response的对下个

2.Next是什么 下一个中间件

3.App是什么 启动应用

2.异步处理方案 async+await

新建asyncawait.js文件

function delay(word){
return new Promise((reslove,reject)=>{
setTimeout(()=>{
reslove('hello'+word)
},2000)
})
} //async+await 一起使用
async function start(){
const word1=await delay('孙悟空')
console.log(word1)
const word2=await delay('猪八戒')
console.log(word2)
const word3=await delay('沙悟净')
console.log(word3)
} start()

执行node asyncawait.js 命令,依次输出

hello 孙悟空
hello 猪八戒
hello 沙悟净
//每隔两秒,顺序执行,没有发生异步的抢执行

async+await在koa中的使用

将server.js改写为

const Koa=require('koa')
const app=new Koa() function delay(){
return new Promise((reslove,reject)=>{
setTimeout(()=>{
reslove()
},1000)
})
} app.use(async(ctx,next)=>{
ctx.body='1'
await next()
ctx.body+='2'
}) app.use(async(ctx,next)=>{
ctx.body+='3'
await delay()
await next()
ctx.body+='4'
}) app.use(async(ctx,next)=>{
ctx.body+='5'
await next()
ctx.body+='6'
}) //
app.listen(3000)

在cmd中,ctrl+c退出服务状态,再执行node server.js

async+await在koa中的实践应用例子,定义一个打印日志的中间件

在项目目录下,新建koa-logger.js文件

module.exports=async(ctx,next)=>{
const start=new Date().getTime()
await next()
const end=new Date().getTime() console.log(ctx.request.url,end-start,ctx.body.length)
}

然后在server.js中引用

在cmd重启命令:node server.js

访问 http://localhost:3000/

在cmd界面,打印出日志

/ 1003 6 //代表访问了根目录,用了1003毫秒,返回体有多长

3.koa路由koa-router入门

1.打开cmd,在项目目录下下,安装koa-router

cnpm install koa-router --save

2.server.js中

const Koa=require('koa')
const Router = require('koa-router');
const app=new Koa();
const router = new Router(); router.get('/', (ctx, next) => {
ctx.body='孙悟空'
});
router.get('/1', (ctx, next) => {
ctx.body='猪八戒'
}); app.use(router.routes()); /*启动路由*/
app.use(router.allowedMethods()); app.listen(3000)

在cmd重启命令:node server.js

访问 http://localhost:3000/  返回孙悟空

访问http://localhost:3000/1 返回猪八戒

Vue+koa2开发一款全栈小程序(4.Koa入门)的更多相关文章

  1. Vue+koa2开发一款全栈小程序(1.课程介绍+2.ES6入门)

    1.课程介绍 1.课程概述 1.做什么? Vue+koa2开发一款全栈小程序 2.哪些功能? 个人中心.图书列表.图书详情.图书评论.个人评论列表 3.技术栈 小程序.Vue.js.koa2.koa- ...

  2. Vue+koa2开发一款全栈小程序(5.服务端环境搭建和项目初始化)

    1.微信公众平台小程序关联腾讯云 腾讯云的开发环境是给免费的一个后台,但是只能够用于开发,如果用于生产是需要花钱的,我们先用开发环境吧 1.用小程序开发邮箱账号登录微信公众平台 2.[设置]→[开发者 ...

  3. Vue+koa2开发一款全栈小程序(3.vue入门、Mpvue入门)

    1.Vue-cli 1.新建一个vue项目 打开cmd 官方命令行工具 npm install -g vue-cli //安装脚手架 cd到你想要存放demo的目录下,然后 vue init webp ...

  4. Vue+koa2开发一款全栈小程序(6.个人中心)

    1.用户信息的获取和展示 1.初始化数据库 cd到server目录下,执行 node tools/initdb.js 登录mysql控制界面,查看初始化以后生成的表 show databases; u ...

  5. Vue+koa2开发一款全栈小程序(9.图书详情页)

    1.获取图书详情 1.修改server/controllers/bookdetail.js为 const {mysql}=require('../qcloud') module.exports=asy ...

  6. Vue+koa2开发一款全栈小程序(8.图书列表页)

    1.图书列表页获取数据 1.在server/routes/index.js中新增路由 router.get('/booklist',controllers.booklist) 2.在server/co ...

  7. Vue+koa2开发一款全栈小程序(7.图书录入功能)

    1.图书录入功能 1.获取图书信息 1.在mydemo/src/until.js中封装工具函数post和get // 工具函数 import config from './config' // htt ...

  8. 微信小程序云开发-从0打造云音乐全栈小程序

    第1章 首门小程序“云开发”课程,你值得学习本章主要介绍什么是小程序云开发以及学习云开发的重要性,并介绍项目的整体架构,真机演示项目功能,详细介绍整体课程安排.课程适用人群以及需要掌握的前置知识.通过 ...

  9. 从零开发一款自己的小程序UI组件库(一)

    写在前面:有开发过小程序的朋友肯定知道组件化开发的特性,高内聚与低耦合.使用已有的UI组件库,诸如:vantUI-weapp.minUI-weapp等UI组件库的诞生使我们的开发速度大大的加快,丰富的 ...

随机推荐

  1. python爬虫scrapy之scrapy终端(Scrapy shell)

    Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码. 其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码. ...

  2. asyncio并发编程

    一. 事件循环 1.注: 实现搭配:事件循环+回调(驱动生成器[协程])+epoll(IO多路复用),asyncio是Python用于解决异步编程的一整套解决方案: 基于asynico:tornado ...

  3. sql 用户相关命令

    查看所有用户 select distinct concat(user, '@', host,';') as userList from mysql.user; select  #查找 distinct ...

  4. BZOJ3196二逼平衡树——线段树套平衡树(treap)

    此为平衡树系列最后一道:二逼平衡树您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询 ...

  5. centos 7创建ss服务(方式一)

    一:安装PIP,由于安装的是python 版本的ss,所以需要先安装PIP: $ curl "https://bootstrap.pypa.io/get-pip.py" -o &q ...

  6. 关于2-sat的建图方法及解决方案

    转载增减: https://blog.csdn.net/qq_24451605/article/details/47126143 https://blog.csdn.net/u012915516/ar ...

  7. bzoj 1854: [Scoi2010]游戏 (并查集||二分图最大匹配)

    链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1854 写法1: 二分图最大匹配 思路:  将武器的属性对武器编号建边,因为只有10000种 ...

  8. Android 简单调用摄像头

    IDE: android studio3.1.2 界面: activity_main2.xml

  9. 使用nmon监控Linxu服务器性能

    nmon是IBM开发的Linux软件工具.能够监控多项Linux服务,最常见的如:CPU使用率.内存使用率.硬盘读写.网卡流量等. 并能设置参数,将记录的数据保存到文件,利用Excel做统计分析. 安 ...

  10. 自学华为IoT物联网_01 物联网概述

    点击返回自学华为IoT物流网 自学华为IoT物联网_01 物联网概述 1. 物联网的概念 百度百科: 物联网(Internet of Things),国内外普遍公认的是MIT Auto-ID中心Ash ...