美文网首页
Vue 使用Ant Design 主题 以及 MockJs的使

Vue 使用Ant Design 主题 以及 MockJs的使

作者: 嗚嗚雲 | 来源:发表于2021-07-23 13:57 被阅读0次

1、使用命令安装antd的vue库
npm install ant-design-vue --save-dev
npm install axios mockjs --save-dev
2、在main文件中添加antd的全局引入 以及 mockjs 自定义配置引入

import Antd from 'ant-design-vue'
import 'ant-design-vue/dist/antd.css'
// 全局配置
import http from '@/api/config'
import './mock'

// 第三方包
Vue.prototype.$http = http
Vue.config.productionTip = false
Vue.use(Antd)
  1. 新建 axios 配置 src/api/config.js
import axios from 'axios'

// 创建一个axios实例
const service = axios.create({
  // 请求超时配置
  timeout: 3000

})

// 添加请求拦截器 
service.interceptors.request.use(
  config => {
    return config
  },
  err => {
    console.log(err)
  }
)
// 添加响应拦截器
service.interceptors.response.use(
  response => {
    let res = {}
    res.status = response.status
    res.data = response.data
    return res
  },
  err => {
    console.log(err)
  }
)

// 请求拦截器
service.interceptors.request.use(config => {
  const token = '123456'
  // 判断是否存在token,如果存在的话,则每个http header都加上token
  if (token) {
    config.headers.accessToken = token
  }
  return config
},
error => {
  return Promise.reject(error)
})

export default service

  1. 新建Mock 配置 src/mock/index.js
// 首先引入Mock
const Mock = require('mockjs')

// 设置拦截ajax请求的相应时间
Mock.setup({
  timeout: '200-600'
})

let configArray = []

// 使用webpack的require.context()遍历所有mock文件
const files = require.context('.', true, /\.js$/)
files.keys().forEach((key) => {
  if (key === './index.js') return
  configArray = configArray.concat(files(key).default)
})

// 注册所有的mock服务
configArray.forEach((item) => {
  for (let [path, target] of Object.entries(item)) {
    let protocol = path.split('|')
    Mock.mock(new RegExp('^' + protocol[1]), protocol[0], target)
  }
})

  1. 新建 Mock 数据 src/mock/demoList.js
let demoList = {
  status: 200,
  message: 'mock成功了',
  data: {
    total: 100,
    'rows|10': [{
      id: '@guid',
      name: '@cname',
      'age|20-30': 23,
      'job|1': ['前端工程师', '后端工程师', 'UI工程师', '需求工程师']
    }]
  }
}
export default {
  'get|/parameter/query': demoList
}
  1. 新建 vue 创建第一个页面 components/DemoAntd.vue
<template>
  <a-layout id="components-layout-demo-top" class="layout">
    <a-layout-header>
      <div class="logo" />
      <a-menu theme="dark" mode="horizontal" :defaultSelectedKeys="['2']" :style="{ lineHeight: '64px' }">
        <a-menu-item key="1">nav 1</a-menu-item>
        <a-menu-item key="2">nav 2</a-menu-item>
        <a-menu-item key="3">nav 3</a-menu-item>
      </a-menu>
    </a-layout-header>
    <a-layout-content style="padding: 0 50px">
      <a-breadcrumb style="margin: 16px 0">
        <a-breadcrumb-item>Home</a-breadcrumb-item>
        <a-breadcrumb-item>List</a-breadcrumb-item>
        <a-breadcrumb-item>App</a-breadcrumb-item>
      </a-breadcrumb>
      <div :style="{ background: '#fff', padding: '24px', minHeight: '280px' }">
        Content
        <a-button type="primary" @click="onclick()"> 点我试试 </a-button>
      </div>
    </a-layout-content>
    <a-layout-footer style="text-align: center">Ant Design ©2018 Created by Ant UED</a-layout-footer>
  </a-layout>
</template>

<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  methods: {
    onclick () {
      console.log(123)
      this.$http.get('/parameter/query').then((res) => {
        console.log(res)
        this.$notification.open({
          message: res.data.message,
          description:
            '这是通知的内容。这是通知的内容。这是通知的内容。',
          onClick: () => {
            console.log('Notification Clicked!')
          }
        })
      })
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->

<style scoped>
</style>

  1. 添加路由
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import DemoAntd from '@/components/DemoAntd'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/demo',
      name: 'DemoAntd',
      component: DemoAntd
    }
  ]
})
  1. 访问http://127.0.0.1:8080/#/demo
    image.png

相关文章

网友评论

      本文标题:Vue 使用Ant Design 主题 以及 MockJs的使

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