1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Node.js实战】一文带你开发博客项目之初识Koa2(koa2安装使用 搭建开发环境 测试路由)

【Node.js实战】一文带你开发博客项目之初识Koa2(koa2安装使用 搭建开发环境 测试路由)

时间:2023-06-11 15:16:59

相关推荐

【Node.js实战】一文带你开发博客项目之初识Koa2(koa2安装使用 搭建开发环境 测试路由)

个人简介

👀个人主页: 前端杂货铺

🙋‍♂️学习方向: 主攻前端方向,也会涉及到服务端

📃个人状态: 在校大学生一枚,已拿多个前端 offer(秋招)

🚀未来打算: 为中国的工业软件事业效力n年

🥇推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2&Vue3项目实战 🥝Node.js🍒Three.js

🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧

Node.js系列文章目录

文章目录

Node.js系列文章目录一、前言二、介绍 Koa21、async / await2、安装 koa2 三、测试路由四、写在最后

一、前言

前面,我们已经完成了原生node.jsExpress 框架的 myblog 项目。

对比:express 中间件是异步回调,koa2 原生支持 async/await。

接下来,我们使用 koa2 继续重构我们的 myblog 项目!

二、介绍 Koa2

1、async / await

async / await 要点:

await 后面可以追加 promise 对象,获取 resolve 的值await 必须包裹在 async 函数里面async 函数执行返回的也是一个 promise 对象try-catch 截获 promise 中 reject 的值

下面我们新建一个 index.js 文件和几个 xx.json 文件,进行一下 async / await 的测试

index.js

const fs = require('fs')const path = require('path')// 用 promise 获取文件内容function getFileContent(fileName) {const promise = new Promise((resolve, reject) => {// 获取文件全名const fullFileName = path.resolve(__dirname, 'files', fileName)// 读取文件fs.readFile(fullFileName, (err, data) => {if (err) {reject(err)return}resolve(JSON.parse(data.toString()))})})return promise}async function readFileData() {try {const aData = await getFileContent('a.json')console.log('a data', aData)const bData = await getFileContent(aData.next)console.log('b data', bData)const cData = await getFileContent(bData.next)console.log('c data', cData)} catch {console.error(err)}}readFileData()

a.json

{"next": "b.json","msg": "this is a"}

b.json

{"next": "c.json","msg": "this is b"}

c.json

{"next": null,"msg": "this is c"}

2、安装 koa2

安装 Koa 项目的脚手架工具

npm install koa-generator -g

创建 blog-koa2 项目

koa2 blog-koa2

安装依赖

npm install

安装环境参数

npm i cross-env --save-dev

修改 package.json 文件(开发环境dev和生成环境prd)

package.json

"scripts": {......"dev": "cross-env NODE_ENV=dev ./node_modules/.bin/nodemon bin/www","prd": "cross-env NODE_ENV=production pm2 start bin/www",},

修改 www.js 代码中的 port 端口为 8000

var port = normalizePort(process.env.PORT || '8000');

终端运行:

三、测试路由

首先我们参照 ./routers/index.js 或 ./routers/users.js 创建 blogs.js 文件

我们在 blog.js 文件中写路由前缀为 /api/blog,创建请求类型为 get 的 list 接口

blog.js

const router = require('koa-router')()// 前缀router.prefix('/api/blog')router.get('/list', async function (ctx, next) {const query = ctx.queryctx.body = {errno: 0,query,data: ['获取博客列表']}})module.exports = router

修改 app.js 文件,导入并使用 blog 路由

app.js

const blog = require('./routes/blog')......app.use(blog.routes(), blog.allowedMethods())

同理,接下来我们创建并配置 user.js 路由

user.js

const router = require('koa-router')()// 前缀router.prefix('/api/user')// 路由的中间件必须是个 async 函数router.post('/login', async function (ctx, next) {// 通过 request.body 获取const {username, password} = ctx.request.bodyctx.body = {errno: 0,username,password}})module.exports = router

app.js

const user = require('./routes/user')......app.use(user.routes(), user.allowedMethods())

通过 postman/apipost 接口测试工具测试

四、写在最后

至此,我们明白了async / await 实现异步的写法、如何安装koa2、如何搭建开发环境以及一些路由的测试,继续跟进学习吧!

后续会对该项目进行多次重构【多种框架(express,koa)和数据库(mysql,sequelize,mongodb)】

如果你需要该项目的源码,请通过本篇文章最下面的方式加入进来~~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。