改造vue-cli,使用mockjs搭建mock server

关于

最近准备开发一款web应用,考虑到可能会有前后端并行开发的场景,所以决定使用mockjs做mock server。

浏览官网文档时发现没有跑在webpack上的例子,索性自己找方法解决。

什么是mockjs?他的使用场景是什么?

当前端工程师需要独立于后端并行开发时,后端接口还没有完成,那么前端怎么获取数据?

这时可以考虑前端搭建web server自己模拟假数据,mockjs用来生成随机数据,拦截 Ajax 请求。

下面引用mockjs官网的图片:

正文:如何改造vue-cli,将mockjs嵌入到webpack?

vue项目初始化

  1. 安装vue-cli脚手架工具,并初始化项目
    //全局安装 vue-cli
    npm install vue-cli -g
    //创建一个基于 webpack 模板的新项目
    vue init webpack mock-server-demo
    //切换至mock-server-demo目录
    cd mock-server-demo
复制代码
  1. 安装依赖
    //我们使用axios来发起http请求
    npm install axios --save
    //安装依赖mockjs
    npm install mockjs --save-dev
复制代码

搭建web server,响应浏览器的http请求

web server不需要自己搭建或者另外安装依赖,在webpack-dev-server中已经封装好了,我们只需要直接那过来用就可以了。

  1. 在项目根路径下创建mock文件夹,并创建图片中mock文件夹中的几个文件

  2. index.js 文件

    const Mock = require(‘mockjs‘);//mockjs 导入依赖模块
    const util = require(‘./util‘);//自定义工具模块
    //返回一个函数
    module.exports = function(app){
        //监听http请求
        app.get(‘/user/userinfo‘, function (rep, res) {
            //每次响应请求时读取mock data的json文件
            //util.getJsonFile方法定义了如何读取json文件并解析成数据对象
            var json = util.getJsonFile(‘./userInfo.json‘);
            //将json传入 Mock.mock 方法中,生成的数据返回给浏览器
            res.json(Mock.mock(json));
        });
    }
复制代码
  1. util.js 文件
    const fs = require(‘fs‘);//引入文件系统模块
    const path = require(‘path‘);//引入path模块

    module.exports = {
        //读取json文件
        getJsonFile:function (filePath) {
            //读取指定json文件
            var json = fs.readFileSync(path.resolve(__dirname,filePath), ‘utf-8‘);
            //解析并返回
            return JSON.parse(json);
        }
    };

复制代码
  1. userInfo.json 文件
    {
        "error":0,
        "data":{
            "userid": "@id()",//随机生成用户id
            "username": "@cname()",//随机生成中文名字
            "date": "@date()",//随机生成日期
            "avatar": "@image(‘200x200‘,‘red‘,‘#fff‘,‘avatar‘)",//生成图片
            "description": "@paragraph()",//描述
            "ip": "@ip()",//IP地址
            "email": "@email()"//email
        }
    }

复制代码
  1. 在路径build/webpack.dev.conf.js文件中的devServer属性中新添加一个before钩子函数,用来监听来自web的http请求。(关于devServer.before如何使用)
    devServer: {
        clientLogLevel: ‘warning‘,
        historyApiFallback: {
          rewrites: [
            { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, ‘index.html‘) },
          ],
        },
        hot: true,
        contentBase: false,
        compress: true,
        host: HOST || config.dev.host,
        port: PORT || config.dev.port,
        open: config.dev.autoOpenBrowser,
        overlay: config.dev.errorOverlay
          ? { warnings: false, errors: true }
          : false,
        publicPath: config.dev.assetsPublicPath,
        proxy: config.dev.proxyTable,
        quiet: true,
        before: require(‘../mock‘),//引入mock/index.js
        watchOptions: {
          poll: config.dev.poll,
        }
      },

复制代码

浏览器发起请求,获取mock data

  1. 在App.vue文件中使用axios发起http请求
export default {
  name: ‘App‘,
  data(){
    return {
      userInfo:{}
    }
  },
  created(){
    this.getUserInfo();
  },
  methods:{
    getUserInfo(){
     //请求‘/user/userinfo‘接口
      this.axios.get(‘/user/userinfo‘)
      .then(({data})=>{
        //打印mock data
        console.log(data);
        if(data.error === 0){
          this.userInfo = data.data;
        }else{
          this.userInfo = {};
        }

      });
    }
  }
}
复制代码

看看效果

可以看到每次点击请求时会获取的随机生成的mock data。

最后

本页博客址是作为一个demo,更多的使用方法可以多参考官方代码。

还有前端自己搭建mock server需要和后端开发首先沟通好才能定义数据结构和接口url,如果后端更改了商定好的数据结构,那么我们只能推倒重来,mock server只是在一定程度上解决问题的手段。

作者:林楠
链接:https://juejin.im/post/5acdb5345188255c5668caa5
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/lzftop/p/10120479.html

时间: 2024-10-29 19:08:02

改造vue-cli,使用mockjs搭建mock server的相关文章

搭建Mock Server

1.为什么要搭建mock-server? 为了更好的分工合作,让前端能在不依赖后端环境的情况下进行开发,其中一种手段就是为前端开发者提供一个 web 容器,这个本地环境就是 mock-server. 目前很多前端 mock 数据的方案的基本流程都是使用 node.js 来模拟 http 请求,配置 router 返回 mock 数据. 一个比较好的 mock-server 该有的能力: 1.与线上环境一致的接口地址,每次构建前端代码时不需要修改调用接口的代码 2.所改即所得,具有热更新的能力,每

Vue CLI 3.x搭建Vue项目

一.Node安装 windows 1. Node.js (>=8.9, 推荐8.11.0+) Node官网下载 .msi 文件,按步骤下载安装即可. 安装完之后在cmd中输入 node -v,若显示版本号,则说明安装成功. 2. Git(命令行终端) Git官网下载安装即可. Linux apt-get install nodejs node -v apt-get install npm npm -v npm命令1.得到原本的镜像地址 npm get registry 2.设置成淘宝 npm c

@vue/cli 3 安装搭建及 webpack 配置

首先卸载旧版1 npm uninstall vue-cli -g //or 2 yarn global remove vue-cli 再次安装 1 npm install -g @vue/cli 2 //or 3 yarn global add @vue/cl 查看版本 vue --version //or vue -V 创建项目vue create  my-project //项目名// Windows 上通过 minTTY 使用 Git Bash,交互提示符并不工作.  //你必须通过  

Mock Server的搭建

一.概述 我们系统与第三方开票系统有交互,场景是我们系统请求第三方开票系统,第三方开票系统根据我们的请求数据,生成开票信息然后返回发票号或异常信息,我们根据返回的信息做对应的处理.因为配合上存在一些障碍,因此想要搭建个mock server,先验证己方系统的正确性. 什么是Mock Server ? 顾名思义,mock:模拟,mock server:实现 mock 功能的一个服务. Mock Server的作用? 下图很好的解释了Mock Server 位置和作用(图来自虫师的博客): 二.py

vue cli 3.x 配置使用 sourceMap

项目使用vue cli 3.x搭建,没有了配置文件,如何更方便的查找到对应的scss文件,配置项目支持sourceMap方式? 分二步走: 1.项目根目录(不是src目录,不要搞错了)添加vue.config.js 2.vue.config.js内容如下: module.exports = { css: { sourceMap: true, // 开启 CSS source maps } } 记得要停止项目,再重新运行项目 npm run serve 不然你以为没有生效,以为我在忽悠你,根本没作

在vue cli 3脚手架里引入tinymce 5富文本编辑器

本文主要讲的是在Vue cli 3脚手架搭建的项目里如何引用Tinymce 5富文本编辑器. 请注意识别"版本号",不同版本的配置细节有所不同. 1. tinymce的安装 1. 安装tinymce-vue npm install @tinymce/tinymce-vue -S 2. 安装tinymce npm install tinymce -S 3. 下载中文语言包 tinymce提供的语言包很多,选择下载中文语言包 2. 使用方法 1. 文件操作 在项目根目录的public目录下

Vue Cli搭建域名服务器常见问题

Vue Cli搭建域名服务器常见问题 Vue Cli不使用反向代理配置域名 通过npm run serve命令执行Vue项目只能通过IP地址来访问,即使域名服务中设置DNS依然访问不到.有以下三种解决办法: 1.修改项目根目录下[email protected]\cli-service\lib\options.js文件 //第133行 devServer: { /* open: process.platform === 'darwin', host: '0.0.0.0',//改为域名 port:

Vue CLI 3搭建vue+vuex 最全分析

一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue serve .vue ui 等命令) CLI 服务:@vue/cli-service是一个开发环境依赖.构建于 webpack 和 webpack-dev-server 之上(提供 如:serve.build 和 inspect 命令) CLI 插件:给Vue 项目提供可选功能的 npm 包 (如

Python+Flask搭建mock api server

前言: 近期由于工作需要,需要一个Mock Server调用接口直接返回API结果: 假如可以先通过接口文档的定义,自己模拟出服务器返回结果,直接对接口基本功能进行联调测试并编写自动化测试脚本,等服务器上线之后,切换server地址,直接可以简化调试时间,缩短项目测试周期: 准备工作 Python安装 Flask安装:pip install flask Get 请求 简单的python代码 from flask import abort, jsonify, Flask, request, Res