美文网首页
Mockjs + Vue-cli 尝试

Mockjs + Vue-cli 尝试

作者: 这名字真不对 | 来源:发表于2017-12-19 16:51 被阅读0次

    最近准备开始撸项目,由于还在设计阶段,还没正式开始项目,预计接口短期内也无法提供,想起有个叫做Mockjs的库可以做这个,干脆尝试自己做个假数据。

    Mockjs基本用法就不提了,参考官方文档即可,这里主要看如何将这个库结合到Vue-cliwebpack-dev-server中。

    该demo的由vue-cli构建,需要注意的是由于新版的vue-webpack-template/build目录下的dev-server.js配置文件取消了,配置项改在了,webpack.dev.conf.js里面

    image

    因此,如果要使用dev-server做处理开发中的请求,需要做另外的配置,这里官方提供了一个钩子:

    before(app){
      app.get('/some/path', function(req, res) {
        res.json({ custom: 'response' });
      });
    }
    

    借助这个钩子可以自己定义中间件对路由劫持并做处理。
    由于这里是webpack配置文件,不便于做mock数据的配置,因此将配置放在其他目录,引入进来(如上图红框部分)。

    接下来看看mockjs路由处理的主体:

    const Mock = require('mockjs')
    const express = require('express')
    const mockRouter = express.Router() // express路由
    const Random = Mock.Random  // mock的方法
    
    // method: GET  
    // path: /data
    mockRouter.get('/data', (req, res) => {
      const data = {
        email: Random.email()  // 随机一个email
      }
      res.json(data)  // 序列化并返回json对象
    })
    module.exports = mockRouter
    

    这里作为路径细节的补充,我们可以在这里做任意的劫持,返回模拟的数据用于填充数据。

    在来看看Vue组件:

    <template>
      <div>
        <h1>Mockjs + json-server</h1>
        <p>the data is : {{ apiData }}</p>
      </div>
    </template>
    
    <script>
    export default {
      data() {
        return {
          apiData: '',
        };
      },
      methods: {
        test() {
          this.$axios  // 将axios全局注入
            .get("/api/data")
            .then(res => {
              this.apiData = res.data;
            })
        }
      },
      created() {
        this.test()
      }
    };
    </script>
    

    渲染结果:


    image

    项目地址:
    https://github.com/XiongAmao/mockjs-demo

    相关文章

      网友评论

          本文标题:Mockjs + Vue-cli 尝试

          本文链接:https://www.haomeiwen.com/subject/bckiwxtx.html