vue-antd-admin框架初探

最近被同事安利了一款后台管理平台框架vue-antd-admin,初识既被这精致、简洁的UI设计惊为天人:多tab切换页面的交互方式、流畅的页面切换效果、化繁为简的UI布局,奈何本人⑤文化,一句"牛X"走天下。迫不及待的star、fork、clone三连,期待揭开它神秘的面纱~

vue-antd-admin是基于antd基础组件开发的,整个框架文档很完善,链接在此,感谢作者的贡献~

目录结构很清晰,如下


├── docs                    # 使用文档

├── public

│  └── favicon.png          # favicon

│  └── index.html          # 入口 HTML

├── src

│  ├── assets              # 本地静态资源

│  ├── components          # 内置通用组件

│  ├── config              # 系统配置

│  ├── layouts              # 通用布局

│  ├── mock                # 本地 mock 数据

│  ├── pages                # 页面组件和通用模板

│  ├── plugins              # vue 插件

│  ├── router              # 路由配置

│  ├── services            # 数据服务模块

│  ├── store                # vuex 状态管理配置

│  ├── theme                # 主题相关

│  ├── utils                # js 工具

│  ├── App.vue              # 应用入口组件

│  ├── bootstrap.js        # 应用启动引导js

│  └── main.js              # 应用入口js

├── package.json            # package.json

├── README.md                # README.md

└── vue.config.js            # vue 配置文件

使用vue就要先关注入口main.js以及App.vue

入口main.js,主要引入插件、初始化路由以及路由守卫、添加请求拦截器


import Vue from 'vue' //引入vue

import App from './App.vue' //引入入口

import {initRouter} from './router' //引入初始化router方法

import './theme/index.less' //引入主题样式

import Antd from 'ant-design-vue' //引入antd

import Viser from 'viser-vue' //引入antv-g2绘制图形

import '@/mock' //引入mock数据

import store from './store' //引入vuex

import 'animate.css/source/animate.css' //引入动画样式

import Plugins from '@/plugins' //引入自定义插件

import {initI18n} from '@/utils/i18n' //引入国际化

import bootstrap from '@/bootstrap' //引入启动引导方法

const router = initRouter(store.state.setting.asyncRoutes) //加载异步路由

const i18n = initI18n('CN', 'US') //初始化国际化语言

Vue.use(Antd) //vue挂载antd

Vue.config.productionTip = false //

Vue.use(Viser) //挂载antv-g2

Vue.use(Plugins) //挂载自定义中间件

bootstrap({router, store, i18n, message: Vue.prototype.$message}) //初始化路由以及路由守卫、axios拦截器

new Vue({

  router,

  store,

  i18n,

  render: h => h(App),

}).$mount('#app') //挂载到dom  

App.vue注释如下,主要使用了antd的ConfigProvider组件做全局配化,共享数据给所有子孙组件。
通过router-view展示对应路由匹配的组件


<template>

  <!-- 提供全局组件可访问数据 -->

  <a-config-provider :locale="locale">

    <router-view/>

  </a-config-provider>

</template>

<script>

export default {

  name: 'App',

  data() {

    return {

      locale: {}

    }

  },

  created () {

    this.setHtmlTitle() //设置头部

    this.setLanguage(this.lang) //设置语言

    enquireScreen(isMobile => this.setDevice(isMobile)) //设置pc/移动模式

  },

  mounted() {

  this.setWeekModeTheme(this.weekMode) //设置色弱模式

  },

  watch: {

    //监听全局语言、模式、主题以及titile变更

  },

  methods: {

  }

}

</script>  

</style>

a-config-provider为antd组件库中的全局配置组件,来看一下它的实现,来人~上代码!

ar ConfigProvider = {
  name: 'AConfigProvider',
  props: {
    getPopupContainer: PropTypes.func,  //弹出框(Select, Tooltip, Menu 等等)渲染父节点,默认渲染到 body 上
    prefixCls: PropTypes.string, //class前缀
    renderEmpty: PropTypes.func, //自定义组件空状态
    csp: PropTypes.object, //设置 Content Security Policy 配置
    autoInsertSpaceInButton: PropTypes.bool, //设置为 false 时,移除按钮中 2 个汉字之间的空格
    locale: PropTypes.object, //语言包配置
    pageHeader: PropTypes.object, //统一设置 pageHeader 的 ghost
    transformCellText: PropTypes.func //Table 数据渲染前可以再次改变,一般用户空数据的默认配置
  },
  provide: function provide() {
    var _self = this;
    this._proxyVm = new Vue({
      data: function data() {
        return _extends({}, _self.$props, {
          getPrefixCls: _self.getPrefixCls,
          renderEmpty: _self.renderEmptyComponent
        });
      }
    });
    return {
      configProvider: this._proxyVm._data //共享configProvider对象给子孙组件
    };
  },
methods:{}
}

今天的分析就到这里,现有一个全局的概念,下篇我们分析布局以及组件的展示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容