美文网首页
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