当前位置:   article > 正文

基于element-ui后台模板,日常唠嗑_elementui后台模板

elementui后台模板

后面会补充github地址


案例说明

徒手搭建后台管理系统模板(2.0)

之前网上找了以下模板,大多太重,我想要一款超轻量级,此处量级是指,代码结构,目录结构,简单。


因果:需要在大屏系统中假如后台管理系统,大屏用的是2.0

1.引入库

代码如下(示例):

  1. import Element from 'element-ui'
  2. import 'element-ui/lib/theme-chalk/index.css'

2.创建布局组件

代码如下(layout/index):

  1. <div class="admin-wrapper">
  2.     <div class="sidebar-container">
  3.         <!--左侧菜单-->
  4.     </div>
  5.     <div class="main-container">
  6.         <div class="header-main">
  7.             <!--顶部菜单-->
  8.         </div>
  9.       <!--内容区域-->
  10.     </div>
  11. </div>

3.创建布局组件

代码如下(layout/components/menuBar):

  1. <el-scrollbar wrap-class="scrollbar-wrapper">
  2. <el-menu>
  3. <!--菜单组件menu-item-->
  4. <menu-item v-for="(router, key) in menulist" :key="key" :item="router"/>
  5. </el-menu>
  6. </el-scrollbar>

模拟菜单数据 menuList: mockMenuData

  1. const mockMenuData = [
  2. { id: '1', level: 1, name: '菜单A', parentId: '0', path: '' },
  3. { id: '2', level: 1, name: '菜单B', parentId: 0, path: '/yjcd',
  4. children: [
  5. { id: '2_1', level: 2, name: '菜单B_A', parentId: '1', path: '' },
  6. { id: '2_2', level: 2, name: '菜单B_B', parentId: '1', path: '' },
  7. { id: '2_3', level: 2, name: '菜单B_C', parentId: '1', path: '',
  8. children: [
  9. { id: '2_1_1', level: 2, name: '菜单B_C_A', parentId: '2', path: '' },
  10. { id: '2_1_1', level: 2, name: '菜单B_C_B', parentId: '2', path: '' },
  11. { id: '2_1_1', level: 2, name: '菜单B_C_C', parentId: '2', path: '' }
  12. ]
  13. }
  14. ]
  15. }
  16. ]

菜单组件递归子组件 menu-item

  1. <div class="menu-item">
  2. <el-submenu v-if="item.children" :index="item.path" popper-append-to-body>
  3. <template slot="title">
  4. <span slot="title" v-text="item.name"></span>
  5. </template>
  6. <menu-item v-for="(item_, key_) in item.children" :key="key_" :item="item_"/>
  7. </el-submenu>
  8. <template v-else>
  9. <el-menu-item :index="item.path" :id="item.path">
  10. <span slot="title" v-text="item.name"></span>
  11. </el-menu-item>
  12. </template>
  13. </div>

 4.菜单效果展示

5.创建顶部组件

代码如下(layout/components/navBar):

  1. <div class="nav-bar">
  2. <!--开合按钮-->
  3. <div class="toggle-switch">
  4. <div class="icon" @click="handleToggleSwitch" v-if="show"><i class="el-icon-s-fold"></i></div>
  5. <div class="icon" @click="handleToggleSwitch" v-else><i class="el-icon-s-unfold"></i></div>
  6. </div>
  7. <!--面包屑-->
  8. <breadcrumb/>
  9. <!--菜单-->
  10. <div class="right-box">
  11. <el-dropdown class="avatar-container" trigger="click">
  12. <div class="avatar-wrapper">
  13. <img src="" class="user-avatar">
  14. </div>
  15. <el-dropdown-menu slot="dropdown">
  16. <el-dropdown-item divided @click.native="handleLogout">
  17. <span style="display:block;">退出登录</span>
  18. </el-dropdown-item>
  19. </el-dropdown-menu>
  20. </el-dropdown>
  21. </div>
  22. </div>

5.创建顶部面包屑组件

代码如下(layout/components/breadcrumb):

  1. <el-breadcrumb class="app-breadcrumb" separator="/">
  2. <transition-group name="breadcrumb">
  3. <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
  4. <span v-if="item.redirect==='noRedirect'||index==levelList.length-1" class="no-redirect">{{ item.meta.title }}</span>
  5. <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
  6. </el-breadcrumb-item>
  7. </transition-group>
  8. </el-breadcrumb>
  9. const matched = this.$route.matched.filter(item => item.meta && item.meta.title)
  10. this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)

6.创建内容区域组件

代码如下(layout/components/appMain):

  1. <section class="app-main">
  2. <transition name="fade-transform" mode="out-in">
  3. <router-view />
  4. </transition>
  5. </section>

7.效果总览

7.布丁(实现一些小细节)

项目要求,切换时候有loading

嘿嘿,咱之前做移动端时候又类似代码,代码如下:(记得import Loading 哈)

  1. export const el_import = (viewPath) => {
  2. return resolve => {
  3. const el_ld = Loading.service({
  4. text: '加载中···'
  5. })
  6. require(['@/views/' + viewPath], component => {
  7. el_ld.close()
  8. resolve(component)
  9. })
  10. }
  11. }

使用方法:

{
    path: '/test',
    name: 'test',
    meta: { title: 'test', index: 0, keepAlive: false, requireAuth: false },
    component: el_import('admin/index')
}

好了,本期内容就到这里结束吧。

vue-element: 后台管理模板

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/113350
推荐阅读
相关标签
  

闽ICP备14008679号