koa开发基础配置

!!!有脚手架

搞完才发现好像有脚手架呢,不过还没了解过,先放这里了

pnpm install -g koa-generator

参考

  1. koa基础配置:https://juejin.cn/post/6844903509351989255
  2. 路由拆分:https://blog.csdn.net/u010730897/article/details/81741355

项目结构

  1. lib文件夹:数据库相关文件
    1. config.js:数据库配置
    2. mysql.js:数据库操作
  2. router:路由
    1. index.js
    2. router1.js
    3. router2.js
  3. static:静态资源,存放前端被访问的文件
  4. app.js:项目入口

路由拆分

  1. 在路由拆分的过程中,尝试过使用同一个路由,就是说app只渲染一个路由,但是不行,即使都是从index.js中引出来的,到最后也不知道是为什么被拆分了
  2. 因此下面的思路是,在index.js中读取同文件夹其他路由的router,并进行统一的渲染

config.js

// 数据库配置
const config = {
   
  port: 3000,
  database:{
   
    DATABASE:'***',   //数据库
    USERNAME:'***',    //用户
    PASSWORD:'***',  //密码
    PORT:'3306',    //端口
    HOST:'***'   //网址ip
  }
}


module.exports = config

mysql.js

const mysql = require('mysql2') // mysql2的才支持mysql 8
const config = require('./config')

// 数据库连接池
const pool = mysql.createPool({
   
    host:config.database.HOST,
    user:config.database.USERNAME,
    password:config.database.PASSWORD,
    database:config.database.DATABASE
});


// 查询函数 查询语句 查询参数数组
const query = function( sql, values ) {
   

    return new Promise(( resolve, reject ) => {
   
        pool.getConnection(function(err, connection) {
   
            if (err) {
   
                resolve( err )
            } else {
   
                connection.query(sql, values, (err, rows) => {
   

                    if ( err ) {
   
                        reject( err )
                    } else {
   
                        resolve( rows )
                    }
                    connection.release()
                })
            }
        })
    })

}

// 查询user_info
const findUserInfo = function (value) {
   
    const  _sql = `SELECT * FROM user_info where userName="${
     value}"`
    return query(_sql)
}

module.exports={
   
    findUserInfo,
}

index.js

  1. 这里要注意一个问题,以下这里是内容是适用于window的,注意在split的时候我是用“\”来进行分割,这是在我开发阶段时候的分割方式,因为它是这么显示的
  2. 但是在部署到linux服务器上面的时候,我发现打印出来的分割方式是“/”,所以分割符号也是要相应更换的
const glob = require('glob') // 文件路径读取

const registerRouter = (app) => {
    // 路由注册
    glob.sync('./routers/**/*.js') // 相对路径
        .filter(value => value.indexOf('index.js') === -1) // 去掉index.js
        .forEach(value => {
   
            // linux下面要更换分割符号
            // const router = require(`./${value.split('/')[1]}`)
            const router = require(`./${
     value.split('\\')[1]}`) // 路由引入
            app.use(router.routes()) // 路由注册
            .use(router.allowedMethods());
        })
}

module.exports = registerRouter

router1.js(随便叫什么名字都行)

const userModel = require('../lib/mysql')   //数据库方法
const router = require('koa-router')()   //路由

// 商品加入购物车
router.post('/addToCart', async (ctx, next) => {
   
    let flag = false
    // ctx.request.body里面就是前端传过来的东西
    await userModel.addUserCargo(ctx.request.body).then(
        res => {
   
            flag = true
        },
        err => {
   
            console.log('err->', err);
        }
    )
    // 返回数据类型
    ctx.type = 'application/json';
    if(flag){
   
        // ctx.body就是你要返回的东西
        ctx.body = {
   
            code: 200,
            msg: '商品已加入购物车'
        };
    }
    else {
   
        ctx.body = {
   
            code: 400,
            msg: '商品加入购物车失败'
        };
    }

})

// 路由导出 以供index.js引用
module.exports = router

app.js

const Koa = require('koa')
const bodyParser  = require('koa-bodyparser')   //上下文解析

const static = require('koa-static')    //静态资源服务
const path = require('path')
const cors = require('koa-cors')       //跨域访问组件
const registerRouter = require('./routers/index')

const app = new Koa()

// 配置静态资源文件 静态资源设置只要一个就够了 不需要再在接口里面进行编写了
const  staticPath = './static'
app.use(static(
    path.join( __dirname, staticPath)
))

// 允许跨域访问
app.use(cors())

// body解析
app.use(bodyParser())

registerRouter(app)

app.listen(8633, () => {
   
    console.log("在8633端口启动成功")
})


相关推荐

  1. koa开发基础配置

    2023-12-27 13:02:02       48 阅读
  2. 鸿蒙开发ArkTS基础学习-开发准备工具配置

    2023-12-27 13:02:02       31 阅读
  3. Koa框架

    2023-12-27 13:02:02       31 阅读
  4. 基于vim的开发编辑器配置

    2023-12-27 13:02:02       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-27 13:02:02       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-27 13:02:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-27 13:02:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-27 13:02:02       18 阅读

热门阅读

  1. Alibaba Cloud Linux 3.2104 LTS 64位系统可以选择吗?

    2023-12-27 13:02:02       46 阅读
  2. <math.h> 头文件:C语言数学库函数

    2023-12-27 13:02:02       36 阅读
  3. NPM简介与使用指南:打造前端开发的利器

    2023-12-27 13:02:02       42 阅读
  4. chrome去除安全设置

    2023-12-27 13:02:02       41 阅读
  5. 在css中如何实现表单验证效果

    2023-12-27 13:02:02       45 阅读
  6. 如何强制 App 在 iOS 后台不断开与融云的长连接?

    2023-12-27 13:02:02       63 阅读
  7. 活动运营常用的ChatGPT通用提示词模板

    2023-12-27 13:02:02       40 阅读
  8. modbus-tcp-rtu协议图表

    2023-12-27 13:02:02       28 阅读
  9. leetcode | go | 第600题 | 不含连续1的非负整数

    2023-12-27 13:02:02       40 阅读
  10. vue中的动态组件和混入

    2023-12-27 13:02:02       34 阅读