vue+koa2搭建mock数据环境的详细教程


Posted in Javascript onMay 18, 2020

前段时间写了一篇前端vue项目实现mock数据方式的文章,主要是在vue项目里使用mock数据,数据和项目耦合在一起,不太优雅,作为一个有追求的前端,怎么能容忍这种方法呢?特以此篇,记录利用koa2搭建服务端,提供mock数据的方法。

初始化vue项目

这里以vue项目为主,当然别的类型项目依然可以使用这种mock数据的方式。

vue create vue-koa2-demo

前提是安装了vue-cli的脚手架,我电脑安装的是vue-cli3的版本。按照要求一步一步选择后,记得选择安装vuex,后续要使用,启动项目。

koa2项目初始化

前端项目弄好之后,开始安装koa

mkdir koa-demo
cd koa-demo
npm koa koa-router koa-cors

安装工作完成后,在项目根目录下新建一个server.js.

let Koa=require('koa')
let Router=require('koa-router')
let cors=require('koa-cors')
let fs=require('fs')

const app=new Koa()
const router=new Router()

router.get('/getData',async ctx=>{
 // 允许cors跨域请求
 await cors();
 // 返回数据
 ctx.body=JSON.parse(fs.readFileSync('./static/data.json'));
})

// 将koa和中间件连起来
app.use(router.routes()).use(router.allowedMethods());

let port=3000;
app.listen(port,()=>{
 console.log('server is running on'+port)
})

上面请求了一个data.json。需要在项目根目录下新建文件夹static,新建data.json

[{
 "id": 1,
 "name": "曹操",
 "age": "18"
}, {
 "id": 2,
 "name": "孙权",
 "age": "20"
}, {
 "id": 3,
 "name": "刘备",
 "age": "24"
}, {
 "id": 4,
 "name": "魏延",
 "age": "28"
}]

在终端中执行命令启动koa项目

node server.js

当看到下图时,表示启动项目成功

vue+koa2搭建mock数据环境的详细教程

改造前端项目修改Home.vue文件

<template>
 <div class="home">
 <ul>
  <li v-for="item in list" :key="item.id">
  <p>姓名:{{ item.name }}</p>
  <p>年龄:{{ item.age }}</p>
  </li>
 </ul>
 </div>
</template>

<script>
export default {
 name: "Home",
 computed: {
 list() {
  return this.$store.state.list;
 }
 },
 mounted() {
 this.getlist();
 },
 methods: {
 getlist() {
  this.$store.dispatch('getData')
 }
 }
};
</script>

修改App.vue文件

<template>
 <div id="app">
 <router-view />
 </div>
</template>

修改store/index.js

import Vue from "vue";
import Vuex from "vuex";
import axios from "axios";

Vue.use(Vuex);

export default new Vuex.Store({
 state: {
 list: []
 },
 mutations: {
 setlist(state, data) {
  state.list = data;
 }
 },
 actions: {
 getData({ commit }) {
  axios
  .get("/api/getData", {
   headers: {
   Accept: "application/json",
   "Content-Type": "application/json"
   }
  })
  .then(res => {
   if (res.status === 200) {
   return res.data;
   }
  })
  .then(res => {
   commit("setlist", Array.from(res));
  });
 }
 },
 modules: {}
});

记得提前安装axios,这里需要使用axios请求后端接口。

新建配置文件

在根目录下新建一个vue.config.js,由于前后端项目存在跨域,需要使用代理实现。

module.exports = {
 devServer: {
 port: 8085, // 端口号
 https: false, // https:{type:Boolean}
 open: true, //配置自动启动浏览器
 proxy: {
  "/api": {
  target: "http://127.0.0.1:3000",
  changeOrigin: true,
  pathRewrite: {
   "^/api": "/"
  }
  }
 }
 }
};

重新启动项目

npm run serve

就会看到页面上显示出了koa-demo项目里定义的json数据了,大功告成。

vue+koa2搭建mock数据环境的详细教程

这样以后就可以将mock数据的项目和具体前端项目分离开,更方便的使用。再也不用求着后端给mock数据了,自己搞!

参考资料koa官网

总结

到此这篇关于vue+koa2搭建mock数据环境的详细教程的文章就介绍到这了,更多相关vue koa2 mock数据环境内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 Javascript
IE与FireFox的JavaScript兼容问题解决办法
Dec 31 Javascript
JS获取下拉框显示值和判断单选按钮的方法
Jul 09 Javascript
js canvas实现擦除动画
Jul 16 Javascript
jQuery自制提示框tooltip改进版
Aug 01 Javascript
浅析ES6的八进制与二进制整数字面量
Aug 30 Javascript
基于JavaScript实现前端数据多条件筛选功能
Aug 19 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 Javascript
layer更改皮肤的实现方法
Sep 11 Javascript
vue获取form表单的值示例
Oct 29 Javascript
js实现飞机大战小游戏
Aug 26 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
May 18 #Javascript
react 生命周期实例分析
May 18 #Javascript
react使用CSS实现react动画功能示例
May 18 #Javascript
Node.js API详解之 net模块实例分析
May 18 #Javascript
Javascript实现简易天数计算器
May 18 #Javascript
微信小程序开发打开另一个小程序的实现方法
May 17 #Javascript
微信小程序开发之获取用户手机号码(php接口解密)
May 17 #Javascript
You might like
COM in PHP (winows only)
2006/10/09 PHP
PHP常用函数小技巧
2008/09/11 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Python datetime包函数简单介绍
2019/08/28 Python
Python文件路径名的操作方法
2019/10/30 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
Python Django view 两种return的实现方式
2020/03/16 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
英国时尚泳装品牌:Maru Swimwear
2019/10/06 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
护理专业个人求职简历的自我评价
2013/10/13 职场文书
公司清洁工岗位职责
2013/12/14 职场文书
企业给企业的表扬信
2014/01/13 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python