首页 > 编程知识 正文

手机维修快速入门,新手炒股快速入门

时间:2023-05-06 02:27:08 阅读:261243 作者:2836

简单说说 koa2

koa2 是由 express 的原班人马开发的,koa 框架有两个版本:koa 和 koa2。

koa 使用 ES6 的 generator 来编写的,当 node 引擎支持 ES8 之后,koa 的创始人立即使用 async 和 await 重构了 koa 框架,就有了现在的 koa2。

所以,下文中下载 koa2 的脚手架工具时,下载的是 koa....(详见下文)。

脚手架和基础配置 脚手架

koa2 提供了脚手架工具,可以用来更好的创建 koa2 项目。

npm 下载地址:https://www.npmjs.com/package/koa-generator

终端输入:

npm install -g koa-generator

会自动全局安装 koa 脚手架工具。

koa2 -e koa2-weibo-code

执行上面命令,会自动创建 koa2-weibo-code 项目

然后使用 yarn 或者 npm 安装所需依赖。

其他工具 cross-env

用来管理环境变量的模块,不同操作系统中配置不一样,可以使用 cross-env 来做同一配置。

安装:

yarn add cross-env --dev

然后将 package.json 中的 script 节点下的配置信息改为:

"dev": "cross-env NODE_ENV=dev ./node_modules/.羞涩的煎饼/nodemon 羞涩的煎饼/www","prd": "cross-env NODE_ENV=production pm2 start 羞涩的煎饼/www", 知识点 配置二级路由

主文件 ( app ) 中,需要引入二级路由文件,并使用 use 方法分配二级路由的。与 express 略有不同,如下代码所示:

// 一些依赖const api = require('./routes/api')// 一些代码// 添加二级路由app.use(api.routes(), users.allowedMethods());

主文件中无需为二级路由分配路径

二级路由文件中:

const router = require("koa-router")();// 定义路由前缀(当前路由的路径)router.prefix("/api");// 处理二级路由下的 login 路径router.get('/login', async (ctx, next) => { // ctx.body 表示向客户端发送的数据 ctx.body = { ctx }})// 导出配置完的 routermodule.exports = router

第 1 行代码后的 () 不要少

koa2 使用 ctx 替代了 express 中的 req,res 参数

接受 get 参数

这就要分为两点来说了:

普通的 get 提交方式获取参数RESTful API 方式获取参数 获取普通 get 参数

先看一下 koa2 路由代码:

const router = require("koa-router")();const router = async (ctx, next) => { ctx.body = { "这是一个路由" }})module.exports = router

上面代码为最基本的 koa2 路由

使用 ctx.query 可以获取普通的 get 参数,如下代码所示:

async (ctx, next) => { // query 可以获取原本的通过 get 提交的参数 console.log(ctx.query) // ctx.body 表示向客户端发送的数据 ctx.body = { ctx }} 获取 RESTful API 形式的参数

使用 ctx.params 可以获取 RESTful 格式的 get 参数,如下代码所示:

router.get('/login/:user', async (ctx, next) => { // params 可以获取 RESTful api 格式匹配到的路由 console.log(ctx.params) ctx.body = { ctx }})

postman 中输入 http://localhost:3001/api/login/lijiaqi vscode 控制台中打印:

{ user: 'lijiaqi' } 接受 post 参数

koa2 接受 post 参数需要使用 ctx.request.body ,如下代码所示:

router.post('/login', async (ctx, next) => { // 使用 ctx.request.body 可以获取 post 参数 console.log(ctx.request.body); ctx.body = { ctx, }})

不要和 ctx.body 混淆

使用 postman 进行测试:

结果:

{ username: 'lijiaqi', password: '123' } 路由重定向

使用 router 的 redirect 方法,如下代码所示:

router.redirect("/", "/list");

当访问首页时,自动跳转到 list 页面

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。