koa实战

本文详细介绍了使用Koa框架构建Node.js项目的过程,包括项目初始化、环境配置、路由管理、目录结构优化、数据库操作(Sequelize)、错误处理、中间件编写以及增删改查接口的实现。通过实例展示了Koa的灵活性和模块化。
摘要由CSDN通过智能技术生成

项目初始化

// 初始化项目,生成package.json
npm init

指定入口文件 main.js

项目的基础搭建

创建 src 工作目录

创建 main.js 主入口文件

在 main.js 中引入 koa

const koa = require('koa')
const app = new Koa()

app.listen(3000, () => {
   
  // 监听成功的回调
  console.log('server is running:http://localhost:3000')
})

node main.js 后即可通过访问 http://localhost:3000,访问到此项目

项目的基本优化

自动重启

// 热更新,只在开发模式下才会用的到
npm install nodemon -D

这时候我们安装的 nodemon 会在 package.json 中的 devDependencies 下

修改 script 选项

"scripts":{
   "dev":"nodemon ./src/main.js"
}

使用 nodemon 启动,开发过程中的改动会自动重启

配置文件

我们开发的过程中还需要区分环境,开发、正式、测试等

// 安装dotenv
npm install dotenv -S

在项目的根目录下创建.env文件

尽可能早的在项目中引入 dotenv 并进行环境变量的配置

const dotenv = require('dotenv')
dotenv.config()
// 经过了上面的配置,我们在.env文件中所配置的环境变量就已经被加载进process.env中了
// 可以将环境变量导出,在需要用到的时候进行引入
module.exports = process.env

这样我们就在项目中配置了环境变量,配置环境变量还有另外一种方式,就是在 package.json 中的 script 中配置执行的命令,并指定环境变量,这样我们就不用新开一个文件在 js 文件中引用了

添加路由

// 这是一个构造函数
const Router = require('koa-router')
const router = new Router({
    prefix: '/user' })

router.post('/register', (ctx, next) => {
   })

通过引入 koa 的路由中间件 koa-router,我们可以设置项目的路由,通过在构造函数中传入prefix:'/user'可以设置路由的前缀,以作为不同功能模块的区分

目录结构的划分

我们在 main.js 中引入了 koa 启动了服务

又在 main.js 中引入了 koa-router 设置了项目的路由

但是随着功能的逐渐增多,项目变大,我们不能把所有的东西都写在 main.js 中,我们需要做功能模块的区分

抽离路由

在 src 目录下新建 router 文件夹,这个文件夹专门存放并管理项目中的路由。

  • 如果需要新增 user 的路由,就新建 user.route.js 文件

  • 如果需要新增 order 的路由,就新建 order.route.js 文件

    const Router = require('koa-router')
    const router = new Router({
           prefix: '/order' })
    router.post('/add', addOrderController)
    
    module.exports = router
    
    

新建好了各个功能模块的路由,我们需要一个index.js文件来作为路由的总入口文件,它负责引入各个功能模块的路由

const Router = require('koa-router')
const router = new Router()
const fs = require('fs')

// 需要使用nodejs的fs模块,来进行文件的读取和引入
fs.readdirSync(__dirname).forEach((file) => {
    
  // 读取当前目录下的文件['user.route.js','order.route.js']
  if (file !== 'index.js') {
    
    const currentFile = require('./' + file)
    // 注册路由
    router.use(currentFile.routes())
  }
})

module.exports = router

这样我们所有的路由都注册在了index.js中的总路由中,我们只需要在main.js中注册在 app 上,就可以实现路由的功能

const router = require('./router') // 引入index.js可以不用写

app.use(router.routes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值