美文网首页
vue2.0+koa后台的练习

vue2.0+koa后台的练习

作者: 焚心123 | 来源:发表于2020-10-26 14:03 被阅读0次
    • 首先说明这是看的技术胖的koa2及vue2.0+koa实战总结的一些,目前还没有正整用项目练习过,先说下思路:其实koa2就是通过使用路由,往mongodb数据库中写入数据及查找数据,增删改查等,然后前端通过axios进行请求koa2中写的路由返回的数据,然后进行页面的渲染就可以了(这里注意下:使用koa2操作mongodb的话,我们还需要几个模板,后续会进行更新的)
    • 首先在我们创建的vue脚手架中的根目录下新建一个文件夹server, 在server下新建一个index.js,当然后面的话,可以多创建几个js文件,引入到index.js中就可以了,在这里我就在index.js中写了
    • 1、使用koa2,那么就要先下载koa,不过我们要先初始化才能下载
     npm init -y   //不加-y也可以,一路回车就行
     npm install --save koa
    
    • 2、我们会使用到路由,那么就下载路由
      npm install --save koa-router
    
    • 3、里面会有跨域问题,那么下载中间件koa2-cors
     npm install --save koa2-cors
    
    • 4、会有post请求数据,下载中间件koa-bodyparser帮助我们处理post请求数据的格式
      npm install --save koa-bodyparser
    
    • 5、启动服务器的时候,命令
     node index.js//你当前的编写服务器的js文件
    
    • 6、直接上代码(这里没有使用将数据写入到mongodb中,后面会更新的)
    const Koa = require('koa');//引入koa模块
    const app = new Koa();//调用模块中的方法并进行声明
    
    const cors = require('koa2-cors');//中间件,解决跨域问题
    app.use(cors());//注册
    
    const Router = require('koa-router');//路由中间件
    
    const bodyparser = require('koa-bodyparser');//post请求数据处理格式的中间件
    app.use(bodyparser());//注册
    
    let home = new Router();//这是声明前缀不同的路由http://localhost:3000/home/menu0
    home.get('/menu0', async (ctx)=>{
        //get 使用query进行接受,post使用body进行接受
        // 这是我们接受到前台传递的数据, 可以将这条数据进行处理或者是写入到mongodb数据库中
        console.log(ctx.request.query);
        //当前台请求当前数据的时候,成功了,后台返回给前台的响应,前台请求数据中的data中就会进行显示加提示这条信息
        // ctx.body = JSON.stringify(ctx.request.query);
        ctx.body = '请求数据写入成功啦';
    });
    home.get('/a', async(ctx)=>{//http://localhost:3000/home/a
        // console.log(ctx.request.body);
      ctx.response.body=({//这是后台给前台返回的数据,只要前台请求接口就会获取到数据
            title:'我是后台返给前台的数据',
            content:'快点接受数据',
            status:200
        });
    });
    
    let page = new Router();
    page.post('/a', async(ctx)=>{//http://localhost:3000/page/a
        // 输入localhost:3000/page/a页面会提示405,找不到post的方法
        //原因为 Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求
        // 所以将post请求改为get请求即可
        // 还有在前台请求数据的时候,其实post已经执行了
        ctx.body = ctx.request.body;
    });
    
    let router = new Router();//这是声明总的路由
    //将上面写的home及page路由进行再主路由上注册
    router.use('/home',home.routes(),home.allowedMethods());
    router.use('/page',page.routes(),page.allowedMethods());
    
    // 在将主路由注册到koa中就可以了
    app.use(router.routes()).use(router.allowedMethods());
    
    app.listen(3000,()=>{//http://localhost:3000这是当前服务器的端口号
        console.log('服务器启动成功!');//会在cmd命令符中显示这句话提示我们
    });
    
    • 7、在我们前台中,我们可以通过axios进行请求数据(先下载axios,之后再vue的main.js全局引入)
    npm install --save axios
    //main.js
    import axios from 'axios';
    Vue.prototype.$axios = axios;
    

    注意:axios中get请求数据,写入参数的时候,属性名为params,post请求数据的时候,属性名为data

    • get 请求(添加参数并返回给后台)
          // get请求
            this.$axios('/api/home/menu0',{
               params:{
                    id:1,
                    title:'我是请求后台接口,并向后台传递参数'
               }
            }).then(res=>{
                console.log(res);
                console.log('写入成功!')
            }).catch(msg=>{
                console.log('写入失败!')
            })
    
    • post请求(添加参数并返回给后台,记得要下载中间件npm install --save koa-bodyparser,否则会接受不到前台传递的数据)
          // post请求
            this.$axios({
                url: '/api/page/a',
                method: 'post',
                data: {
                    name: '小月'
                }
                }).then(res => {
                console.log('请求结果:', res);
            });
    
    • get请求(请求接口,获取后台传递的数据)
          this.$axios({
                url: '/api/home/a',
                method: 'get',
                }).then(res => {
                console.log('请求结果:', res);
            }).catch(msg=>{
                console.log(msg);
            });
    

    说明:请求URL中的api是我在vue中配置的跨域(因为我们在koa中配置了跨域的中间件,但是请求数据的时候,还是提示我们需要跨域,那么就在vue中进行了配置)

    • 在vue的config文件夹下的index.js中
    module.exports = {
      dev: {
    
        // Paths
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
        proxyTable: {//这里是配置的跨域
          '/api': {
            target: 'http://localhost:3000', //目标路径,别忘了加http和端口号
            changeOrigin: true, //是否跨域
            ws: true,
            pathRewrite: {
              '^/api': '' //重写路径
            }
          }
        },
    
        // Various Dev Server settings
        host: 'localhost', // can be overwritten by process.env.HOST
        port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
        autoOpenBrowser: false,
        errorOverlay: true,
        notifyOnErrors: true,
        poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
      }
    
    • 如果有不对的地方,欢迎小伙伴留言指正!!!让我们一起进步

    相关文章

      网友评论

          本文标题:vue2.0+koa后台的练习

          本文链接:https://www.haomeiwen.com/subject/pweamktx.html