当前位置:   article > 正文

掌握Mock.js基本使用:快速模拟API实现增删改查

掌握Mock.js基本使用:快速模拟API实现增删改查

在项目中使用Mock.js进行增删改查操作,可以模拟后端接口,方便前端开发和测试。下面是一个简单的示例,展示如何在Vue 2项目中使用Mock.js实现增删改查功能。

1. 安装依赖

npm install mockjs --save

2. 配置Mock.js

在项目的根目录下创建一个文件夹mock,并在其中创建一个文件index.js,用于配置Mock.js。

  1. // mock/index.js
  2. import Mock from 'mockjs';
  3. let dataList = [];
  4. const count = 10;
  5. for (let i = 0; i < count; i++) {
  6. dataList.push(Mock.mock({
  7. id: '@increment',
  8. name: '@name',
  9. age: '@integer(20, 50)',
  10. address: '@county(true)'
  11. }));
  12. }
  13. // 获取列表
  14. Mock.mock('/api/data', 'get', () => {
  15. return {
  16. code: 200,
  17. data: dataList
  18. };
  19. });
  20. // 添加数据
  21. Mock.mock('/api/data', 'post', (options) => {
  22. const body = JSON.parse(options.body);
  23. dataList.push(Mock.mock({
  24. id: '@increment',
  25. ...body
  26. }));
  27. return {
  28. code: 200,
  29. message: '添加成功'
  30. };
  31. });
  32. // 更新数据
  33. Mock.mock(/\/api\/data\/\d+/, 'put', (options) => {
  34. const body = JSON.parse(options.body);
  35. const id = parseInt(options.url.split('/').pop());
  36. dataList = dataList.map(item => item.id === id ? { ...item, ...body } : item);
  37. return {
  38. code: 200,
  39. message: '更新成功'
  40. };
  41. });
  42. // 删除数据
  43. Mock.mock(/\/api\/data\/\d+/, 'delete', (options) => {
  44. const id = parseInt(options.url.split('/').pop());
  45. dataList = dataList.filter(item => item.id !== id);
  46. return {
  47. code: 200,
  48. message: '删除成功'
  49. };
  50. });
  51. export default Mock;

3. 在Vue项目中引入Mock.js

main.js中引入Mock.js配置文件:

  1. // main.js
  2. import Vue from 'vue';
  3. import App from './App.vue';
  4. import axios from 'axios';
  5. import './mock'; // 引入mock配置
  6. Vue.config.productionTip = false;
  7. Vue.prototype.$axios = axios;
  8. new Vue({
  9. render: h => h(App),
  10. }).$mount('#app');

4. 创建组件实现增删改查

src/views目录下创建一个组件DataList.vue,实现增删改查功能。

  1. <template>
  2. <div>
  3. <h1>Mock.js 增删改查示例</h1>
  4. <div>
  5. <input v-model="newData.name" placeholder="Name" />
  6. <input v-model="newData.age" placeholder="Age" type="number" />
  7. <input v-model="newData.address" placeholder="Address" />
  8. <button @click="addData">添加</button>
  9. </div>
  10. <ul>
  11. <li v-for="item in dataList" :key="item.id">
  12. <div>
  13. <span>{{ item.name }}</span>
  14. <span>{{ item.age }}</span>
  15. <span>{{ item.address }}</span>
  16. <button @click="editData(item)">编辑</button>
  17. <button @click="deleteData(item.id)">删除</button>
  18. </div>
  19. <div v-if="editingId === item.id">
  20. <input v-model="editDataObj.name" placeholder="Name" />
  21. <input v-model="editDataObj.age" placeholder="Age" type="number" />
  22. <input v-model="editDataObj.address" placeholder="Address" />
  23. <button @click="updateData(item.id)">更新</button>
  24. </div>
  25. </li>
  26. </ul>
  27. </div>
  28. </template>
  29. <script>
  30. export default {
  31. data() {
  32. return {
  33. dataList: [],
  34. newData: {
  35. name: '',
  36. age: '',
  37. address: ''
  38. },
  39. editingId: null,
  40. editDataObj: {
  41. name: '',
  42. age: '',
  43. address: ''
  44. }
  45. };
  46. },
  47. created() {
  48. this.fetchData();
  49. },
  50. methods: {
  51. fetchData() {
  52. this.$axios.get('/api/data').then(res => {
  53. if (res.data.code === 200) {
  54. this.dataList = res.data.data;
  55. }
  56. });
  57. },
  58. addData() {
  59. this.$axios.post('/api/data', this.newData).then(res => {
  60. if (res.data.code === 200) {
  61. this.fetchData();
  62. this.newData = { name: '', age: '', address: '' };
  63. }
  64. });
  65. },
  66. deleteData(id) {
  67. this.$axios.delete(`/api/data/${id}`).then(res => {
  68. if (res.data.code === 200) {
  69. this.fetchData();
  70. }
  71. });
  72. },
  73. editData(item) {
  74. this.editingId = item.id;
  75. this.editDataObj = { ...item };
  76. },
  77. updateData(id) {
  78. this.$axios.put(`/api/data/${id}`, this.editDataObj).then(res => {
  79. if (res.data.code === 200) {
  80. this.fetchData();
  81. this.editingId = null;
  82. }
  83. });
  84. }
  85. }
  86. };
  87. </script>

5. 总结

通过上述步骤,我们在Vue 2项目中使用Mock.js成功模拟了一个简单的增删改查操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/732267
推荐阅读
相关标签
  

闽ICP备14008679号