mockjs如何使用?

308 阅读3分钟

mockjs的开源地址:github.com/nuysoft/Moc…

mockjs的案例地址:mockjs.com/examples.ht…

使用mockjs

项目安装mock

npm install mockjs

项目中新建mock文件

//引入mock模块
import Mock from 'mockjs'

将mock文件在main.js中导入

import Vue from 'vue'
import App FROM './App.vue'
import './mock/index.js'

Vue.config.productionTip = false

new Vue({
	render:h => h(App),
}).$mount('#app')

mock语法

生成字符串
  • 生成指定次数字符串
import Mock from 'mockjs'
const data = Mock.mock({
"string|4":"哈哈"
})
  • 生成指定范围长度字符串
const data = Mock.mock({
"string|1-8":"哈哈"
})

注意:文本/标题等前面加'c'表示生成中文文本,否则是英文

生成文本
  • 生成一个随机字符串
const data = Mock.mock({
	"string":"@cword"
}) 
  • 生成指定长度和范围
const data = Mock.mock({
    string:"@cword(1)"
    str :"@cword(10,15)"
})
生成标题和句子
  • 生成标题和句子
const data = Mock.mock({
    title:"@ctitle(8)"
    sentence:"@csentence"
})
  • 生成指定长度的标题和句子
const data = Mock.mock({
    title:"@ctitle(8)"
    sentence:"@csentence(50)"
})
  • 生成指定范围的
const data = Mock.mock({
    title:"@ctitle(5,8)"
    sentence:"@csentence(50,100)"
})
生成段落
  • 随机生成段落
const data = Mock.mock({
  content:"@cparagraph()"
})
生成数字
  • 生成指定数字,number所对应的值或者 'number|' 后面的值
const data = Mock.mock({
        numl: 2,       //2
	"number|80":1 //80
})
  • 生成范围数字
const data = Mock.mock({
	"number|1-99":1
})
生成自增id
  • 随机生成标识
const data = Mock.mock({
	id:"@increment"
})
生成姓名-地址-身份证

注意:城市地址中@city(true)表示地区名称带省,如果没有true则没有省,只有市

  • 随机生成姓名-地址-身份证
const data = Mock.mock({
	name:"@cname()"
	idCard:"@id()"
	address:"@city(true)"
})
随机生成图片

注意图片大小只能用?x?不能用*连接。否则浏览器会出现Too big of an image!,不显示图片

  • 生成图片:@image(“300*200”,‘#ff0000','#fff','gif','坤坤')
  • 参数1:图片大小
[	'300*250','250*250','240*400','336*280'	'180*150','720*300','468*60','234*60'	'388*31','250*250','240*400','120*40'	'125*125','250*250','240*400','336*280']
  • 参数2:图片背景色

  • 参数3:图片前景色

  • 参数4:图片格式

  • 参数5:图片文字

生成时间
  • @Date
  • 生成指定格式时间:@date(yyyy-MM-dd hh:mm:ss)

注意:指定格式时间字母必须和以上一样

生成数组

指定数组返回的参数

  • 指定长度:‘date|5’
  • 指定范围:'data|5-10'
const data = Mock.mock({
'list|50-99':[
        {
            name:'@cname'
            address:'@city(true)'
            id:'@increment()'
        }	
    ]
})

mock拦截请求

注意:使用 Mock.mock 拦截请求时的第三个参数可以是{}或者()=>{ return{} }

使用箭头函数可以获取参数和地址,箭头函数中的参数是一个对象,包括url,type,body

  • url:指明请求的地址,末尾会拼接get请求传递过来的参数
  • type:指明请求的类型
  • body:指明post请求传递的数据

image.png

定义get请求
Mock.mock('api/get/news','get',{
        status:200,
        message:"获取数据成功"
})

或者

Mock.mock('api/get/news','get',()=>{
    return{
        status:200,
        message:"获取数据成功"
    }
})

如果想要获取get请求的参数可以参考下列方法(调用该方法需要传递两个参数—从箭头函数的参数对象中获取到的url和想要获取的参数名称):

// 根据url获取query参数
const getQuery = (url, name) => {
  const index = url.indexOf('?')
  if (index !== -1) {
    const queryStrArr = url.substr(index + 1).split('&')
    for (let i = 0; i < queryStrArr.length; i++) {
      const itemArr = queryStrArr[i].split('=')
      if (itemArr[0] === name) {
        return itemArr[1]
      }
    }
  }
  return null
}

注意:如果请求需要传递参数,则会拼接到地址末尾,会无法识别。此时应该使用正则来匹配。

Mock.mock(/\/api\/get\/news/, 'get', (options) => {console.log(options)})
定义post请求
Mock.mock('/api/add/news','post',(options)=>{
console.log(options)
    return{
        status:200,
        message:"获取数据成功"
    }
})

image.png

注意:箭头函数中参数对象的body是JSON类型的对象(post请求传递的参数),想要将body中数据添加到数组中需要先将body转换为js对象,即const body = JSON.parse(options.body)

以上内容参考:VUE结合MOCKJS完成企业级高效开发-黑马程序员杭州校区出品_哔哩哔哩_bilibili