Vue项目使用mock数据的几种方式

简介: Vue项目使用mock数据的几种方式

Vue项目使用mock数据的几种方式

本文是基于vue/cli 3.0创建的项目进行讲解

首先我们来说一说vue/cli 3.0 与 2.0 的一些不同:

  1. 3.0 移除了 static 文件目录,新增了 public 目录,这个目录下的静态资源不会经过 webpack 的处理,会被直接拷贝,所以我们能够直接访问到该目录下的资源,静态数据(如json数据、图片等)需要存放在这里。
放在 public目录下的静态资源可直接通过(http ://localhost:8080/+ 文件名称)来访问,不需要在前面加一个 /public路径
  1. 3.0 移除了 config、build 等配置目录,如果需要进行相关配置我们需要在根目录下创建 vue.config.js 进行配置。

方式一:使用mockjs插件实现本地mock数据

  1. 安装mockjs插件

    npm i mockjs -D
  2. 在src目录下创建一个mock文件夹,在mock文件夹下创建一个index.js和一个data文件夹(用于存放项目需要的模拟数据)

    .
    ├── src
    │   ├── mock
    │   │   └── data
    │   │   │   └──  test.json
    │   │   └── index.js 
    .   .   
  3. mock目录下的index.js示例如下:

    const Mock = require('mockjs')
     
    // 格式: Mock.mock( url, 'post'|'get' , 返回的数据)
    Mock.mock('/api/test', 'get', require('./data/test.json'))
    Mock.mock('/api/test2', 'post', require('./data/test2.json'))
  4. main.js入口文件中引入mock数据,不需要时,则注释掉

    require('./mock') // 引入mock数据,不需要时,则注释掉
  5. 最后,在vue模板中使用即可

    axios.get('/api/test')
    .then(function(res){
      console.log(res);
    })
    .catch(function(err){
      console.log(err);
    });

方式二:在public文件夹放mock数据(无需使用mockjs插件)

  1. public文件夹下创建一个mock文件夹,用来存放模拟数据的json文件

    .
    ├── public
    │   ├── mock
    │   │   └── test.json 
    .   .   
    放在 public目录下的静态资源可直接通过(http ://localhost:8080/ + 文件名称)来访问,不需要在前面加一个 /public路径。
  2. vue.config.js里进行路径配置,如下:

    module.exports = {
     devServer: {
       proxy: {
         '/api': { // 代理接口
           target: 'http://localhost:8080',
           ws: true, // proxy websockets
           changeOrigin: true, // 是否开启跨域
           pathRewrite: { // 路径重写
             '^/api': '/mock'
           }
         }
       }
     }
    }

    devServer.proxy官方文档

  3. 最后,在vue模板中使用即可

    axios.get('/api/test.json') // 注意这里需要.json后缀
    .then(function(res){
      console.log(res);
    })
    .catch(function(err){
      console.log(err);
    });
这方式貌似不支持 post请求,有待研究。

方式三:前端本地启动一个nodejs服务,vue项目向nodejs服务请求mock数据

  1. 创建一个node项目(为了方便,本例直接在vue项目根目录创建,当然也可以是其它任何地方)

    .
    ├── 项目根目录
    │   └── serve.js
    .   .  
  2. serve.js示例

    const http = require('http')
    // url模块用于处理与解析 前端传给后台的URL,适用于get请求(不适用于post请求),详情参见文档
    const urlLib = require('url')
    
    http.createServer(function (req, res) {
      const urlObj = urlLib.parse(req.url, true) // 注意:这里的第二个参数一定要设置为:true, query才能解析为对象形式,可以更加方便地获取key:value
      const url = urlObj.pathname
      const get = urlObj.query
      console.log(url)
      // 模拟的mock数据
      const data = {
        "code": 200,
        "list": [
            {
                "id": '0001',
                "name": "test"
            },
            {
                "id": '0002',
                "name": "test2"
            }
        ]
      }
    
      // console.log(get.user)
      if (url === '/test') { // 接口名
        res.write(JSON.stringify(data))
      }
      res.end()
    }).listen(9000)
  3. 启动node服务

    node serve.js
  4. 配置vue.config.jsproxy,解决跨域

    module.exports = {
     devServer: {
       proxy: {
         '/api': {
           target: 'http://localhost:9000',
           ws: true, // proxy websockets
           changeOrigin: true, // 是否开启跨域
           pathRewrite: { // 路径重写
             '^/api': ''
           }
         }
       }
     }
    }
  5. 最后,在vue模板中使用即可

    axios.get('/api/test')
    .then(function(res){
      console.log(res);
    })
    .catch(function(err){
      console.log(err);
    });

总结

方式二目前来看只支持get方式请求,对于post请求还有待研究。方式三虽然也是一种实现方式,但实现起来比较麻烦。个人建议使用方式一,灵活、方便。

相关文章
|
6天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
16天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
36 1
|
16天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
37 1
|
19天前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
19天前
|
JavaScript 测试技术 UED
解决 Vue 项目中 Tree shaking 无法去除某些模块
【10月更文挑战第23天】解决 Vue 项目中 Tree shaking 无法去除某些模块的问题需要综合考虑多种因素,通过仔细分析、排查和优化,逐步提高 Tree shaking 的效果,为项目带来更好的性能和用户体验。同时,持续关注和学习相关技术的发展,不断探索新的解决方案,以适应不断变化的项目需求。
|
6月前
|
JavaScript API
【vue实战项目】通用管理系统:api封装、404页
【vue实战项目】通用管理系统:api封装、404页
76 3
|
6月前
|
人工智能 JavaScript 前端开发
毕设项目-基于Springboot和Vue实现蛋糕商城系统(三)
毕设项目-基于Springboot和Vue实现蛋糕商城系统
|
6月前
|
JavaScript Java 关系型数据库
毕设项目-基于Springboot和Vue实现蛋糕商城系统(一)
毕设项目-基于Springboot和Vue实现蛋糕商城系统
174 0
|
6月前
|
JavaScript 前端开发 API
Vue3+Vite+TypeScript常用项目模块详解
现在无论gitee还是github,越来越多的前端开源项目采用Vue3+Vite+TypeScript+Pinia+Elementplus+axios+Sass(css预编译语言等),其中还有各种项目配置比如eslint 校验代码工具配置等等,而我们想要进行前端项目的二次开发,就必须了解会使用这些东西,所以作者写了这篇文章进行简单的介绍。
142 0
Vue3+Vite+TypeScript常用项目模块详解
|
6月前
|
设计模式 JavaScript
探索 Vue Mixin 的世界:如何轻松复用代码并提高项目性能(上)
探索 Vue Mixin 的世界:如何轻松复用代码并提高项目性能(上)
探索 Vue Mixin 的世界:如何轻松复用代码并提高项目性能(上)