koa实战 (二):项目分层

👨 作者简介:大家好,我是Taro,前端领域创作者
✒️ 个人主页:唐璜Taro
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏


前言

随着node的不断发展,koa这门技术也越来越重要,很多人都开启了学习koa,本文就介绍了koa的分层结构。
在这里插入图片描述


一、用户注册接口

新建 router 目录,在 user.router.js 引入 koa-router

const Router = require('koa-router')
const userRouter = new Router({ prefix:'/users' })
// post请求
userRouter.post('/', create)
module.exoprt = userRouter 

引入 userRouter ,在 app 目录下的 index.js 中注册接口

const Koa = require('koa')
const bodyParser = require('koa-bodyparser')

const userRouter = require('../router/user.router')

const app = new Koa()

app.use(bodyParser())
app.use(userRouter.routes())
app.use(userRouter.allowedMethods())

module.exports = app

二、路由触发

1. 前端接口请求

(请求示例):

baseURl/users

当使用的如上接口进行注册时,当执行到 userRouter.post('/', create) 时,会进入create方法中去


2.读入数据

// 注册接口 (user.router.js)

const Router = require('koa-router')
const { create } = require('../controller/user.controller')

const userRouter = new Router({ prefix: '/users' })

userRouter.post('/', create)

module.exports = userRouter

3. 创建 controller

新建 controller 目录,在 user.controller.js

const service = require('../service/user.service')

class UserController {
  async create(ctx, next) {
    const user = ctx.request.body
    const result = await service.create(user)
    ctx.body = result
  }
}

module.exports = new UserController()

4. 写入数据库

新建 service 目录,在 user.service.js 中,进行连接数据库 app/database.js

const mysql = require('mysql2')

const config = require('./config')

const connections = mysql.createPool({
  host: config.MYSQL_HOST,
  port: config.MYSQL_PORT,
  database: config.MYSQL_DATABASE,
  user: config.MYSQL_USER,
  password: config.MYSQL_PASSWORD,
})

// 连接测试
connections.getConnection((err, conn) => {
  conn.connect((err) => {
    if (err) {
      console.log('链接失败')
    } else {
      console.log('数据库链接成功')
    }
  })
})

module.exports = connections.promise()
const connections = require('../app/database')

class UserService {
  async create(user) {
    const { name, password } = user
    const statement = `INSERT INTO user (userName,password) VALUES (?,?)`
    const result = await connections.execute(statement, [name, password])
    return result[0]
  }
}

module.exports = new UserService()

总结

以上就是今天要讲的内容,本文仅仅简单介绍了koa在真实项目中的结构分层,以及各层之间处理的事务关联逻辑

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值