随笔 - 633,  文章 - 0,  评论 - 13,  阅读 - 48万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1.mock.js官网:Mock.js (mockjs.com)

2.创建mock-demo:vue create mock-demo

选择:

Default ([Vue 2] babel, eslint)

3.进入mock-demo:cd mock-demo

4.安装依赖:

cnpm install axios --save   #安装axios,使用axios发送ajax请求

cnpm intall mockjs --save-dev   #安装mockjs ,使用mockjs产生随机数据

cnpm install json5 --save-dev   #安装json5,使用json5解决json文件,无法添加注释问题

或者

npm install axios --save   #安装axios,使用axios发送ajax请求

npm intall mockjs --save-dev   #安装mockjs ,使用mockjs产生随机数据

npm install json5 --save-dev   #安装json5,使用json5解决json文件,无法添加注释问题

5.可以在 package.json 中看安装的依赖

6.使用mock:

复制代码
1.在mock-demo中新建文件夹mock
2.在mock文件夹下新建testMock.js
3.在testMock.js中添加内容:
const Mock=require('mockjs')   //引入mockjs
let id = Mock.mock('@id')    //定义一个变量id,用来接收  通过 Mock.mock('@id') 生成的id内容
console.log(id)   //打印id

4.使用:
 cd mock
 node testMock.js 运行testMock.js文件

5.可以看到打印的变量值:350000197608045955
复制代码

7.打印一个对象代码:testMock.js

const Mock=require('mockjs')   //引入mockjs
let id = Mock.mock('@id') //定义一个变量id,用来接收 通过 Mock.mock('@id') 生成的id内容
console.log(id) //打印id

let obj = Mock.mock({
id:'@id'
})
console.log(obj) //对象就是在json中所需要的内容

8.打印多个字段的对象代码:testMock.js

复制代码
const Mock=require('mockjs')   //引入mockjs
let id = Mock.mock('@id')    //定义一个变量id,用来接收  通过 Mock.mock('@id') 生成的id内容
console.log(id)   //打印id

let obj = Mock.mock({
    id:'@id()',     //得到随机的id 对象
    username:'@cname()',  //随机生成中文名字
    date:'@date()',   //随机生成日期
    avatar:'@image("200x200","red","#fff","avatar")',  //随机生成一个图片的url,宽和高为200,背景色为红色,字体颜色为#fff,文字内容为avatar
    description:'@paragraph()',   //随机生成一些描述
    ip:'@ip()',  //随机生成IP地址
    email:'@email()'  //随机生成email
})
console.log(obj)   //对象就是在json中所需要的内容
复制代码

9.将对象单独保存为一个文件

复制代码
1.在mock文件夹下新建userinfo.json
2.在userinfo.json文件中输入内容:
{
    id:'@id()',     //得到随机的id 对象
    username:'@cname()',  //随机生成中文名字
    date:'@date()',   //随机生成日期
    avatar:'@image("200x200","red","#fff","avatar")',  //随机生成一个图片的url,宽和高为200,背景色为红色,字体颜色为#fff,文字内容为avatar
    description:'@paragraph()',   //随机生成一些描述
    ip:'@ip()',  //随机生成IP地址
    email:'@email()'  //随机生成email
}

3.在userinfo.json会出现一些问题:
问题1:不能使用中文注释
问题2:变量名必须用两个引号来表示,如:“id”:"@id()"

4.用json5可以解决这些问题:
解决方法:
第一步:将“userinfo.json”修改为“userinfo.json5”,即后缀修改为json5
第二步:在mock文件夹下新建一个测试JSON5的js文件叫:testJSON5.js
复制代码

10.testJSON5.js的内容:

 

复制代码
const fs = require('fs')   //定义一个fs ,fs模块为nodejs的核心模块之一,主要处理文件的读写、复制、S删除、重命名等操作
const path = require('path')   //定义一个path,path模块为nodejs的一个模块,在这个模块中,提供了许多使用的,可被用来处理与转换路径的方法和属性
const JSON5 = require('json5')   //引入json5 模块


//fs.readFileSync同步读取文件,第一个参数代表文件路径(不可省略),第二个参数代表读出文件的编码方式(可省略,省略后读出的数据是buffer数据格式)
//path.join,将 以逗号分隔的一系列路径,这些路径将连接在一起以构成最终路径
//__dirname,表示当前文件所在目录
var json =  fs.readFileSync(path.join(__dirname,'/userinfo.json5'),'utf-8')  //将获取到内容保存到变量json中
console.log(json)  //打印json
var obj = JSON5.parse(json)  //用JSON5来解析读取到的json
console.log(obj)
复制代码

11.devServer:作为拦截器,来监听请求和响应,官网:https://webpack.js.org/configuration/dev-server/

12.使用devServer中的before,这个拦截键来拦截

13.使用webpack中的devServer

复制代码
1.在mock-demo中创建vue.config.js文件
2.vue.config.js中的内容为:
module.exports={
devServer: {
before: require('./mock/index.js') //用before的属性来拦截处理mock中的index.js文件,需要在mock文件夹下新建一个index.js
}

}
复制代码

 14. 在mock文件夹下新建一个index.js,index.js的内容:

 

复制代码
const fs = require('fs')   //定义一个fs ,fs模块为nodejs的核心模块之一,主要处理文件的读写、复制、S删除、重命名等操作
const path = require('path') //定义一个path,path模块为nodejs的一个模块,在这个模块中,提供了许多使用的,可被用来处理与转换路径的方法和属性
const JSON5 = require('json5') //引入json5 模块
const Mock = require('mockjs') //引入mock.js

//读取json文件
function getJsonFile(filePath){
//fs.readFileSync同步读取文件,第一个参数代表文件路径(不可省略),第二个参数代表读出文件的编码方式(可省略,省略后读出的数据是buffer数据格式)
//path.join,将 以逗号分隔的一系列路径,这些路径将连接在一起以构成最终路径
//__dirname,表示当前文件所在目录
var json = fs.readFileSync(path.join(__dirname,filePath),'utf-8') //将获取到内容保存到变量json中
console.log("nihao")
console.log(json) //打印json
var obj = JSON5.parse(json) //用JSON5来解析读取到的json
console.log(obj)
return obj
}



//返回一个函数
module.exports=function (app) { //用app这个对象来监听它的 '/user/userinfo' url,
//监听http请求
app.get('/user/userinfo',function (rep,res) {
//每次响应请求时读取mock data的json文件
//getJsonFile方法定义了如何读取json文件并解析成数据对象
var json = getJsonFile('./userinfo.json5');
//将json传入Mock.mock 方法中,生成的数据返回给浏览器
res.json(Mock.mock(json))
});

}
复制代码

15.npm run serve :运行程序

16.在mock-demo文件夹下的src文件夹下的components文件夹下的HelloWorld.vue文件中的 export default 中的props下新建mounted:function(){}

复制代码
<script>
  import axios from 'axios'   //引入axios
export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  mounted:function () {
    axios.get('/user/userinfo').then(   //使用axios发送get请求
            res=>{
              console.log(res)   //打印响应结果
            }
    )
  }

}
</script>
复制代码

17.在vue中使用mock.js,移除mock

 

1.在index.js中设置一个MOCK变量,只有当MOCK变量为true的时候,再监听http请求

其中index.js内容变为:

复制代码
const fs = require('fs')   //定义一个fs ,fs模块为nodejs的核心模块之一,主要处理文件的读写、复制、S删除、重命名等操作
const path = require('path') //定义一个path,path模块为nodejs的一个模块,在这个模块中,提供了许多使用的,可被用来处理与转换路径的方法和属性
const JSON5 = require('json5') //引入json5 模块
const Mock = require('mockjs') //引入mock.js

//读取json文件
function getJsonFile(filePath){
//fs.readFileSync同步读取文件,第一个参数代表文件路径(不可省略),第二个参数代表读出文件的编码方式(可省略,省略后读出的数据是buffer数据格式)
//path.join,将 以逗号分隔的一系列路径,这些路径将连接在一起以构成最终路径
//__dirname,表示当前文件所在目录
var json = fs.readFileSync(path.join(__dirname,filePath),'utf-8') //将获取到内容保存到变量json中
console.log("nihao")
console.log(json) //打印json
var obj = JSON5.parse(json) //用JSON5来解析读取到的json
console.log(obj)
return obj
}



//返回一个函数
module.exports=function (app) { //用app这个对象来监听它的 '/user/userinfo' url,
if(process.env.MOCK == 'true'){ //只有当Mock值为true时,才进行http请求监听
console.log("进行监听")
//监听http请求
app.get('/user/userinfo',function (rep,res) {
//每次响应请求时读取mock data的json文件
//getJsonFile方法定义了如何读取json文件并解析成数据对象
var json = getJsonFile('./userinfo.json5');
//将json传入Mock.mock 方法中,生成的数据返回给浏览器
res.json(Mock.mock(json))
});
}

}
复制代码
process.env.MOCK == 'true' 就是设置的条件,注意此处env.后面的MOCK需要与.env.development文件中定义的MOCK一样,需要一模一样,大小写表示不一样
.env.[mode]         # 只在指定的模式中被载入 的使用
3.指定模式为: 
development
vue-cli-service serve
4.在项目根目录下新建.env.development文件,文件内容为:
.env.development文件内容如下:
MOCK=true

   5.重启服务器:npm run serve

    6.当后端开发完成后,就可以把 .env.development文件内容如下:的  MOCK=true 修改为 MOCK=false

    7.然后重启服务器:npm run serve

  8.此时,mock便不可用了

 

 

18.

 

posted on   大话人生  阅读(1267)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示