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 相关文章推荐
JS window.opener返回父页面的应用
Oct 24 Javascript
jQuery插件的写法分享
Jun 12 Javascript
javascript中Object使用详解
Jan 26 Javascript
详解如何较好的使用js
Dec 16 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
JavaScript验证知识整理
Mar 24 Javascript
jquery与js实现全选功能的区别
Jun 11 jQuery
详解node如何让一个端口同时支持https与http
Jul 04 Javascript
vue路由教程之静态路由
Sep 03 Javascript
layer.js之回调销毁对话框的例子
Sep 11 Javascript
教你如何用Node实现API的转发(某音乐)
Sep 20 Javascript
JavaScript中条件语句的优化技巧总结
Dec 04 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
PHP中创建并处理图象
2006/10/09 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
php中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
不定义JQuery插件 不要说会JQuery
2016/03/07 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
python常用知识梳理(必看篇)
2017/03/23 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
python使用udp实现聊天器功能
2018/12/10 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
新闻专业本科生的自我评价分享
2013/11/20 职场文书
小学教师管理制度
2014/01/18 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
初中生期末评语大全
2014/04/24 职场文书
中班幼儿评语大全
2014/04/30 职场文书
党员群众路线承诺书
2014/05/20 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS