首页前端开发其他前端知识mockjs在vue中要怎么使用和配置

mockjs在vue中要怎么使用和配置

时间2024-03-27 15:58:04发布访客分类其他前端知识浏览1306
导读:这篇文章给大家分享的是“mockjs在vue中要怎么使用和配置”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“mockjs在vue中要怎么使用和配置”吧。...
这篇文章给大家分享的是“mockjs在vue中要怎么使用和配置”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“mockjs在vue中要怎么使用和配置”吧。

 

mockjs配置和使用方式

需求

在前后端分离的开发中,需要前后端同时开发,但是在后端完成前,暂时是没有数据返回给前端使用的,如果先写静态后面再改,就有重复工作的内耗存在。

所以我们需要一种简单快速的模拟数据的模块,本文选的是mockjs。

步骤

1.安装mockjs

npm install mockjs

2.在项目的src文件夹下建mock文件夹,在mock文件夹下建index.js(存放所有的http模拟返回的接口数据); 以下我写了两个接口:

import mock from 'mockjs';
    
const vehicle = mock.mock(
  '/api/car', 'post', (req, res) =>
 {

    return {

      code: 200,
      data: [{

        id: 1,
        name: 'byd',
      }
, {

        id: 1,
        name: 'baojun',
      }
],
      message: '查询成功'
    }

  }
    )
const user = mock.mock(
  '/api/user', 'get', (req, res) =>
 {

    return {

      code: 200,
      data: {

        id: 1,
        sex: 1,
        age: 25,
        createtime: '2017-04-01'
      }
,
      message: '查询成功'
    }

  }
)
export default {

  vehicle,
  user
}
    

3.为了方便在所有组件中使用mock模拟数据在项目 的main.js中导入刚编辑的接口数据

 import mockdata from "./mock";
     //这样的话组件里就可以随意调用接口了

4.在组件中调用虚拟接口

在生命周期钩子函数中调用接口即可:我使用axios ,前提是项目已经安装了axios(先npm install axios,再npm install --save axios vue-axios),一个按钮执行点击事件,下面方法调接口

button @click="search()">
    点击查询/button>

  methods: {

    search() {
    
      this.$http.get("/api/user").then(res =>
 {
    
        console.log(res);

      }
    );
    
      this.$http.post("/api/car").then(res =>
 {
    
        console.log(res);

      }
    );

    }

  }
,

5.注在项目接口调试完成后需要删除main.js中对于mock的引用以及mock/index.js这些模拟的资源,从而组件中不用做任何修改,最大减少反复工作量

mock使用及mock无侵入的解决

什么是mock?

看了官网的介绍,对前端来说“前后端分离”这点,大大提高了前端开发的效率

前端开发在商讨完需求、接口及数据格式后,就可以直接利用mock模拟后台返回的数据来进行代码开发

为什么要用到mock?

下面我在画个流程图,帮助大家理解mock在项目中的处理逻辑

由此可以看出,前端可以利用mock服务来模拟请求后台数据,只要接口文档出来,就可以按照接口文档的api和数据格式来自己用mock模拟假数据

如何使用mock?

此处以vue-cli2.x脚手架搭起的项目来介绍其使用

1.安装mockjs npm install --save-dev mockjs或 npm install -d mockjs

2.根目录src中添加mock文件夹,如下图结构,并创建

其中index.js内容为:

 import mock from 'mockjs'
 import {
 service }
     from './data/service'
 mock.mock(/\/service\/servicelist/, 'get', service )
console.log('%c前端 mock 环境启动成功', 'color: #38f;
    font-weight: bold')
export default mock

data文件夹中的service.js 为mock模拟返回的数据,其内容为:

import mock from 'mockjs';
    
const service = [];
    
for (let i = 0;
     i  5;
 i++) {

service.push(mock.mock({

 id: mock.random.guid(),
 servicename: `${
mock.random.protocol()}
 --${
mock.random.id()}
`,
 'port|8000-9000': 1,
 ip: mock.random.ip(),
 status: mock.random.pick(['passing', 'critical', 'critical','null']),
 'node|0-2': 1 
}
    ));

}
    
export default service;
    

3.在main.js中引入定义的mock文件夹

import mock from './mock'

此时打开终端控制面板,运行 npm run dev 后,打开开发者调试工具的console,即可看见

4.接下来,发送的所有http请求均会被mock拦截,如果匹配到与mock中设置的url路径一致 /service/servicelist 就会将service.js的模拟出的数据返回,如下(.vue的文件中)

script>
    
import axios from "axios";

export default {

  data() {

    return {

    }
    ;

  }
,
  methods: {

    getserver() {
    
      axios
        .get('/service/servicelist')
        .then((res) =>
 {
    
          console.log(res);

        }
    )
        .catch((error) =>
 {
    
          console.log(error);

        }
    );

     }

  }
,
}
    ;
    
/script>

​ 如上截图,可以看出已经将发送给该url的请求匹配拦截并返回了一个对象,可以定义一个空数组将res.data的数据保存起来,到页面进行渲染

5.如果发送http请求的url与mock中定义的不匹配或不存在的话,就会弹出报错

注意:还记得前面说过的mock会拦截所有http请求,包括你要请求的真实api,也会拦截,提示404报错;此时将main.js中的引入的 import mock from './mock' 注释掉就好了

但是,”懒“这个动力,让我们思考,如何将mock这个东西很听话的被我们”蹂躏“呢?

mock无侵入式配置

接着上面留出的问题,我们就要思考,如何将mock在项目代码中分离,既能保证前后端分离开发,又能在不改代码的情况下任意切换环境;

​ 大家应该都清楚用vue-cli搭建好的项目框架中,会有直接配置好的 npm run dev 和 npm run build 环境;

​ 想到这一步,大家应该也就有了思路,那就是再配置一套dev环境,重命名为mock,后期直接通过 npm run mock 和 npm run dev 一条指令随意切换代码运行环境

​ 如何实现呢?且听我细细道来(此处以vue@2.5.2版本为例)

1.用vue-cli搭建好的项目框架,打开 package.json 文件,添加运行脚本

"mock": "webpack-dev-server --inline --progress --config build/webpack.mock.conf.js"

如下:

"scripts": {

    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "mock": "webpack-dev-server --inline --progress --config build/webpack.mock.conf.js",   //---此条脚本就是需要配置的参数,注意json文件中不能写注释,切勿复制此句话
    "start": "npm run dev",
    "lint": "eslint --ext .js,.vue src",
    "build": "node build/build.js"
  }
,

2.在根目录下的build文件夹中创建 webpack.mock.conf.js 文件,并将 webpack.dev.conf.js 的文件内容全部复制过来

3.在 webpack.mock.conf.js 中添加配置,如下

let entry = basewebpackconfig.entry
object.keys(entry).foreach(function (name) {

 entry[name] = ['./src/mock'].concat(entry[name]) //---在运行npm run mock时将mock这个文件在entry中打包编译进来
}
    )

保存好后,打开终端运行 npm run mock

后期如果需要与后台调试接口了,直接运行 npm run dev 即可切换过来,保证了mock在业务代码中抽离出

注意 :在 webpack.mock.config.js 中配置了entry后,是不需要在main.js中再引入mock的。



感谢各位的阅读,以上就是“mockjs在vue中要怎么使用和配置”的内容了,通过以上内容的阐述,相信大家对mockjs在vue中要怎么使用和配置已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

vue配置

若转载请注明出处: mockjs在vue中要怎么使用和配置
本文地址: https://pptw.com/jishu/654324.html
TypeScript中的用法只读修饰符怎样用 java char数组输出乱码问题,如何解决

游客 回复需填写必要信息