Mock.js在Vue项目中的使用小结

目录
  • 写在前面
  • Mock.js 初体验
  • Mock.js语法规范
    • 1.数据模板定义规范
    • 2.数据占位符定义规范
    • 3.一个实际开发中会用到的案例:生成个人信息
  • Mock.js在Vue中的使用
    • 1.定义接口路由,在接口中并返回mock模拟的数据
    • 2.在vue.config.js中配置devServer,在before属性中引入接口路由函数
    • 3.使用axios调用该接口,获取数据
  • 如何控制Mock接口的开关?

写在前面

本篇博客收录于我的github前端笔记仓库中,持续更新中,欢迎star~

https://github.com/mengqiuleo/myNote

Mock.js 初体验

安装:

npm install mockjs

导入:

var Mock = require('mockjs')

导入:

var data = Mock.mock({....})

Mock.js语法规范

Mock.js语法规范: https://github.com/nuysoft/Mock/wiki/Syntax-Specification

这里只是说明了一些最常用的语法规范

另外,我们可以直接参考官方给出的示例:http://mockjs.com/examples.html

1.数据模板定义规范

数据模板中的每个属性由 3 部分构成:属性名(name)、生成规则(rule)、属性值(value):

'name|rule': value

属性值是字符串 String

‘name|min-max’: string

通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。

‘name|count’: string
通过重复 string 生成一个字符串,重复次数等于 count。

属性值是数字 Number

‘name|min-max’: string
通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。‘name|count’: string
通过重复 string 生成一个字符串,重复次数等于 count。‘name|min-max’: number
生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。

demo

我们在根目录下新建一个mock的文件夹,并且在该文件夹下新建一个 test.js 文件,用来存放我们要生成的mock数据

注意,首先需要导入mock

// !!!导入mockjs
const Mock = require('mockjs')
// 调用Mock的方法,生成模拟的数据
// 生成一个用户名,*出现1-10次,是随机的
var data1 = Mock.mock({ 'username|1-10': '*' })
//{ username: '****' }
//{ username: '*********' }
// 生成一个用户名,*出现5次
var data2 = Mock.mock({ 'username|5': '*' })
//{ username: '*****' }
// 生成一个年龄,年龄18-40岁中间
var data3 = Mock.mock({ 'age|18-40': 0 })
//{ age: 25 }
// { age: 28 }
// 随机生成一个id
var data4 = Mock.mock('@id')
//450000198502099849
//640000201404227659
// 随机生成一个中文名称
var data5 = Mock.mock('@cname()')
//唐刚
//姜霞
//范磊
console.log(data)

2.数据占位符定义规范

占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中

@占位符
@占位符(参数 [, 参数])

@id() : 得到随机的id

@cname(): 随机生成中文名字

@date(‘yyyy-MM-dd’): 随机生成日期

@paragraph(): 描述

@email(): 邮箱地址

demo

// !!!导入mockjs
const Mock = require('mockjs')

// 随机生成一个id
var data4 = Mock.mock('@id')
//450000198502099849
//640000201404227659
// 随机生成一个中文名称
var data5 = Mock.mock('@cname()')
//唐刚
//姜霞
//范磊
console.log(data)

3.一个实际开发中会用到的案例:生成个人信息

Mock.mock({
id: "@id()",//得到随机的id,对象
username: "@cname()",//随机生成中文名字
date: "@date()",//随机生成日期
description: "@paragraph()",//描述
email: "@email()", //email
'age|18-38': 0
})

我们新建一个 userInfo.js

// !!!导入mockjs
const Mock = require('mockjs')
// 随机生成一个对象
var data = Mock.mock({
  id: '@id()',
  username: '@cname()',
  date: '@date(yyyy-MM-dd)',
  description: '@paragraph()',
  email: '@email()',
  'age|18-40': 0
})
/**
{
  id: '140000198202057935',
  username: '蔡秀英',
  date: '1989-05-22',
  description: 'Dyskicwleb weqosmtu pkqjpcl jtdlcmu rmrurqzw dqsqu lhfbkbg zlcwcczyl pig nivxsa fknxxfv wqqdr acyl. Mpdqrkal fkysogt chie bqmwqbx cbncedxa lzwtv kpecxzs kscg jkutrm rjzbsp loixqslowr twdxdagm lici. Icsmti cmfmby amr enswma bwre nqmywt ikr nsguv siwsbd bsejuotzf xgorcicfjq kwksvnr gfc ttgutrb xmhiwtyo. Kvrhy vhejf iix cgpjhk adehu twa mucee muign bxiaxmxamt ucpuvvg tclw crr uyafxorjs qdyu uunk vjic evmbimfsxz. Wnrxxnkxwn vvwl ahatqd kqoju qdgixcl lmywjtbc ghvexo wjdecdpelz remhft ykjxftxshc jvtjvv grcgxl jnjzfbnq igzpxmy fqpmn.',
  email: 'q.njvudb@hqijwlrsev.om',
  age: 20
}
 */
console.log(data)

Mock.js在Vue中的使用

步骤:

  • 定义接口路由,在接口中并返回mock模拟的数据
  • 在vue.config.js中配置devServer,在before属性中引入接口路由函数
  • 使用axios调用该接口,获取数据

1.定义接口路由,在接口中并返回mock模拟的数据

这里就相当于你在写服务器端的代码

我们在mock文件夹下新建一个index.js文件,在这个文件中定义接口

const Mock = require('mockjs')
// 随机生成一个对象
var data = Mock.mock({
  id: '@id()',
  username: '@cname()',
  date: '@date(yyyy-MM-dd)',
  description: '@paragraph()',
  email: '@email()',
  'age|18-40': 0
})
// console.log(data)
module.exports = function (app) {
  if (process.env.MOCK == 'true') {//判断是否使用mock
    // node中的express框架
    // 参数1: 接口地址;参数2:服务器处理函数
    app.use('/api/userinfo', (req, res) => {
      // 将模拟的数据转成json格式返回给浏览器
      res.json(data)
    })
  }
}

在上面的代码中,我们定义的接口为:/api/userinfo

2.在vue.config.js中配置devServer,在before属性中引入接口路由函数

module.exports = {
  devServer: {
    // devServer在发送请求时,会先走到before指定的函数中进行处理,如果before中没有对应的接口路由,才会请求外网等
    before: require('./mock/index.js')
  }
}

3.使用axios调用该接口,获取数据

这里我们直接在APP.vue中使用axios

<template>
  <div>Hello</div>
</template>

<script>
import axios from 'axios'
export default {
  created() {
    axios.get('/api/userinfo').then(result=>{
      console.log(result);
      console.log(result.data);//其实 result.data 才是我们定义的数据,它会自动在外面包一层,我们可以打印出来进行对比
    })
  }
}
</script>

如何控制Mock接口的开关?

我们只是希望在开发环境下使用mock数据。

新建.env.development,定义环境变量

# 控制是否需要使用mock模拟的数据
MOCK = true

定义接口路由前,判断当前MOCK环境变量是否为true

module.exports = function (app) {
    if (process.env.MOCK == 'true') {
        app.use('/api/userinfo', (req, res) => {
            res.json(obj)
        })
    }
}

到此这篇关于Mock.js在Vue项目中的使用的文章就介绍到这了,更多相关Mock.js Vue使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue项目中mock.js的使用及基本用法

    官方网址:http://mockjs.com/ mockjs是用来模拟产生一些虚拟的数据,可以让前端在后端接口还没有开发出来时独立开发.我们可以使用真实的url,mockjs可以拦截ajax请求,返回设定好的数据. 使用方式 这里主要讨论在vue项目中,使用axios发送ajax请求,mock.js模拟数据的流程. vue-cli搭建项目后,安装axios和mock.js npm install -S axios npm install -D mockjs 在项目中新建mock.js文件夹,来设

  • Vue项目中使用mock.js的完整步骤

    在Vue项目中使用mock.js 开发工具选择:Vscode 1. 使用命令行创建vue项目(手动选择Babel,Router,Vuex) 2. 导入element-ui(为了显示效果好一点),命令行输入 npm i element-ui -S 3.在main.js中进行引用 import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css';//样式文件一定要引入 Vue.use(ElementUI)

  • vue的axios和mock.js你了解吗

    目录 axios.js 安装: 全局引入 axios 封装一个简单的axios包,为axios添加拦截器和判断允许环境(用于判断请求地址)axios.js mockjs 安装 mockservice/home.js 引入mock.js 发送ajax请求,测试拦截 总结 axios.js axios是vue中用于发送ajax(http)请求的工具类 安装: npm install axios 全局引入 axios // main.js import http from 'axios'; Vue.p

  • Vue+Mock.js模拟登录和表格的增删改查功能

    前言 关于mockjs,官网描述的是 1.前后端分离 2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据. 3.数据类型丰富 4.通过随机数据,模拟各种场景. 5 项目不背锅(等后端给接口的话可能会背锅) 等等优点,最后一条我加的. 第一步先安装mock.js npm install mockjs --save-dev 第二步使用 mock.js import Mock from 'mockjs' 哪里用就在哪里引入.我是在项目src/mock/index.js里面使用moc

  • vue+mock.js实现前后端分离

    之前都是介绍在普通项目中使用mock.js,那么本次就来介绍一下在vue中使用mock.js实现前后端分离. 安装: npm install mockjs 这里先写个小案例介绍一下具体使用,写法不规范,仅供参考. 然后案例讲完后我们讲具体的规范使用 那么一起来看看这个案例吧: <script> import Mock from "mockjs" export default { name: "FunctionsDbSource", methods:{ /

  • vue+axios+mock.js环境搭建的方法步骤

    在前后端分离开发模式下,前端项目通常在项目构建初期需要使用假数据以及相应的http请求来进行辅助开发,例如在后端接口还没开发好下,我们可以模拟http请求以及数据来进行前端的axios封装,接口设计,对http状态码处理等.前端模拟数据的方法有许多种,假如你熟悉node.js以及express框架,你可以快速地构建一个后端服务器来进行辅助开发,我本人也比较喜欢这种方式,这种方法在我日后的文章将会有介绍.如果你不熟悉node也没关系,我将一步一步教你如何在前端vue项目中使用mock.js来构建一

  • Mock.js在Vue项目中的使用小结

    目录 写在前面 Mock.js 初体验 Mock.js语法规范 1.数据模板定义规范 2.数据占位符定义规范 3.一个实际开发中会用到的案例:生成个人信息 Mock.js在Vue中的使用 1.定义接口路由,在接口中并返回mock模拟的数据 2.在vue.config.js中配置devServer,在before属性中引入接口路由函数 3.使用axios调用该接口,获取数据 如何控制Mock接口的开关? 写在前面 本篇博客收录于我的github前端笔记仓库中,持续更新中,欢迎star~ https

  • 在vue项目中使用Nprogress.js进度条的方法

    NProgress.js提供页面加载进度条效果,当页面打开加载时,在页面顶部会出现进度条加载动画.NProgress.js是轻量级的进度条组件,使用简便,可以很方便集成到单页面应用中. Ajaxyy应用程序的细长进度条.灵感来自Google,YouTube和Medium. 在vue中使用nprogress.js 安装 $ bower install --save nprogress $ npm install --save nprogress 在项目中引入 在main.js中引入要使用的npro

  • 在Vue项目中使用d3.js的实例代码

    之前写一个 Demo里面 有些东西要使用d3实现一些效果 但是在很多论坛找资源都找不到可以在Vue里面使用D3.js的方法,npm 上面的D3相对来说 可以说是很不人性化了 完全没有说 在webpack上怎么使用D3.js 最后折腾很久 看到某位外国大佬 看他的案例 成功的实现了在Vue项目里面实现D3的使用 首先安装 npm install d3 --save-dev 以防万一,然后看package.json 安装完成 在我们开始之前,让我们渲染一个Vue组件,它使用常规的D3 DOM操作呈现

  • 在Vue项目中使用jsencrypt.js对数据进行加密传输的方法

    项目需求中需要对用户登录时的密码进行加密,在网上查询些许文章后,最终与后端协商使用jsencrypt.js. jsencrypt.js的github地址: https://github.com/travist/js... 使用yarn安装至Vue项目 yarn add jsencrypt --dep 或者使用npm npm install jsencrypt --dep 引入jsencrypt import { JSEncrypt } from 'jsencrypt' 可封装为全局混合,便于调用

  • vue项目中 使用 pako.js 解密 gzip加密字符串的代码详解

    前言 今天跟后台对接一个接口,接受到一个加密的值,说是通过gzip加密过的,然后就蒙蔽了, 赶紧上百度找了一下资料,通过一篇文章(原文在底部)发现有个js库可以解密,就下载轻松解密了 实现代码 poko.js可至Github下载 https://github.com/nodeca/pako or npm install pako import pako from 'pako' // 一个是加密:window.btoa(),一个是解密:window.atob() function decode(e

  • vue项目中在外部js文件中直接调用vue实例的方法比如说this

    一般我们都是在main.js中引入vue,然后在vue文件中直接使用this(this指向的是vue实例),但是在实际开发中,我们往往会引入外部的js文件使用this,这个this就会指向window,并不是我们期待的vue实例,那么就需要重新引入vue文件(import Vue from 'vue'),这样很麻烦.在目前项目中我使用的方法是mian.js导出vue实例,然后在需要使用的js中引入. 步骤一:main.js导出vue实例 var vue = new Vue({ el: '#app

  • vue项目中,main.js,App.vue,index.html的调用方法

    如下所示: 1.main.js是我们的入口文件,主要作用是初始化vue实例,并引入所需要的插件 2.App.vue是我们的主组件,所有页面都是在App.vue下进行切换的.其实你也可以理解为所有的路由也是App.vue的子组件.所以我将router标示为App.vue的子组件. 1.index.html文件入口 2.src放置组件和入口文件 3.node_modules为依赖的模块 4.config中配置了路径端口值等 5.build中配置了webpack的基本配置.开发环境配置.生产环境配置等

  • vue项目中main.js使用方法详解

    目录 第一部分:main.js文件解析 第二部分:Vue.use的作用以及什么时候使用 Vue.use是什么?(官方文档) Vue.use()什么时候使用? 补充:关于main.js方便小技巧 总结 第一部分:main.js文件解析 src/main.js是入口文件,主要作用是初始化vue实例并使用需要的插件 在main.js文件中定义了一个vue对象,其中el为实例提供挂载元素 //基础配置 import Vue from 'vue' import App from './App.vue' /

随机推荐