使用koa-generator快速搭建 Koa项目和使用

使用koa-generator快速搭建 Koa项目

全局安装

1、安装koa-generator

npm i koa-generator -g 

2、创建项目

koa2 project-name

3、 进入项目,安装依赖

cd project-name
npm i

4、运行项目

npm run dev // 或者 npm start

在这里插入图片描述
在这里插入图片描述

注意:处理前后端跨域问题

安装 koa2-cors 
npm i koa2-cors -S

在app.js中配置跨域解决

// 处理跨域 
const cors = require('koa2-cors');

// 配置中间件
app.use(cors({
  origin:function(ctx){
    return 'http://localhost:8080';
  }
}))

新建data文件用于用户的权限

data中新建user.js

module.exports = [
  {
    id:1,
    name:'fqniu1',
    auth:[]
  },
  {
    id:2,
    name:'fqniu2',
    auth:[]
  },
  {
    id:3,
    name:'fqniu3',
    auth:[]
  }
]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
user.js

module.exports = [
  {
    id:1,
    name:'fqniu1',
    auth:[2,3,6,7]
  },
  {
    id:2,
    name:'fqniu2',
    auth:[2,3,5,6,7,8]
  },
  {
    id:3,
    name:'fqniu3',
    auth:[2,3,4,5,6,7,8]
  }
]

router.js

module.exports = [
  {
    id:2,
    pid:0, //证明是第一层路由,无父级
    path:'/course', // 根路由需要加 / 
    name:'Course',
    title:'课程管理'
  },
  {
    id:3,
    pid:2, // 意思是id为2的子级
    path:'operate', // 子路由不需要加 /
    name:'Operate',
    link:'/course/operate',
    title:'课程操作'
  },
  {
    id:4,
    pid:3, // 意思是id为3的子级
    path:'info_data',
    name:'CourseInfoData',
    link:'/course/operate/info_data',
    title:'课程数据'
  },
  {
    id:5,
    pid:2, // 意思是id为2的子级
    path:'add',
    name:'CourseAdd',
    link:'/course/add',
    title:'课程添加'
  },
  {
    id:6,
    pid:0, // 证明是第一层路由,无父级
    path:'/student',
    name:'Student',
    title:'学生管理'
  },
  {
    id:7,
    pid:6, // 意思是id为2的子级
    path:'operate',
    name:'StudentOperate',
    link:'/student/operate',
    title:'学生操作'
  },
  {
    id:8,
    pid:6, // 意思是id为2的子级
    path:'add',
    name:'StudentAdd',
    link:'/student/add',
    title:'学生添加'
  },
]

routes下的index.js

const router = require('koa-router')()

const users = require('../data/user')
const routers = require('../data/router')

// 注意这里面 最好使用 loginCheck 中间件 拦截 防止直接暴露
// router.post('/user_router_auth', loginCheck ,async (ctx, next) => {
  router.post('/user_router_auth',async (ctx, next) => {
  const { uid } = ctx.request.body 
  // 在路由里面来筛选 uid 把uid对应的那一个user那一项拿出来
  if(uid){
    let authRouterInfo = [];
    const userInfo = users.filter(user => user.id == uid)[0]
    // 这里是为了把里面auth和router中一一对应的取出来
    userInfo.auth.map(rid => {
      routers.map(router => {
        if(router.id == rid){
          authRouterInfo.push(router)
        }
      })
    })
    ctx.body = authRouterInfo;
  }else{
    next()
  }
})

module.exports = router


前端请求数据

新建server文件下的index.js

import axios from 'axios'
import qs  from 'qs'

function getUserRouters(uid){
  return axios({
    url:'http://localhost:3000/user_router_auth',
    method:'post',
    headers:{
      'Content-type':'application/x-www-form-urlencoded'
    },
    data: qs.stringify({
      uid
    })
  }).then(res => {
    return res.data
  }).catch(error => {
    throw error
  })
}

export {
  getUserRouters
}

测试请求和数据

<script>
import { getUserRouters } from '@/server';
export default {
  name: "App",
  components: {
    MHeader,
    SideBar,
    PageBoard,
  },
  created() {},
  methods: {},
  async mounted() {
     const data = await getUserRouters(2)
     console.log(data);
  },
}
</script>

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值