当前位置:首页 > VUE

vue elementui实现管理后台

2026-01-21 18:55:48VUE

Vue + ElementUI 实现管理后台

环境准备

确保已安装 Node.js(建议版本 14+)和 npm/yarn。使用 Vue CLI 创建项目:

vue create admin-demo
cd admin-demo

安装 ElementUI 和依赖:

vue add element
npm install axios vue-router vuex --save

项目结构

典型管理后台目录结构:

src/
├── api/           # 接口封装
├── assets/        # 静态资源
├── components/    # 公共组件
├── router/        # 路由配置
├── store/         # Vuex状态管理
├── utils/         # 工具函数
├── views/         # 页面组件
├── App.vue        # 根组件
└── main.js        # 入口文件

基础配置

main.js 中引入 ElementUI:

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)

布局实现

使用 ElementUI 的布局组件构建框架:

<template>
  <el-container>
    <el-aside width="200px">
      <el-menu router>
        <el-submenu index="1">
          <template slot="title">系统管理</template>
          <el-menu-item index="/user">用户管理</el-menu-item>
        </el-submenu>
      </el-menu>
    </el-aside>

    <el-container>
      <el-header>Header</el-header>
      <el-main>
        <router-view></router-view>
      </el-main>
    </el-container>
  </el-container>
</template>

路由配置

router/index.js 中配置动态路由:

const routes = [
  {
    path: '/',
    component: Layout,
    children: [
      {
        path: '/user',
        component: () => import('@/views/UserManage'),
        meta: { title: '用户管理' }
      }
    ]
  }
]

API 封装

api/user.js 中封装接口:

import request from '@/utils/request'

export function getUsers(params) {
  return request({
    url: '/api/users',
    method: 'get',
    params
  })
}

表格组件

用户管理页示例:

<template>
  <div>
    <el-table :data="userList">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="role" label="角色"></el-table-column>
    </el-table>

    <el-pagination
      @size-change="handleSizeChange"
      @current-change="handleCurrentChange"
      :current-page="page"
      :page-sizes="[10, 20, 50]"
      :page-size="size"
      layout="total, sizes, prev, pager, next"
      :total="total">
    </el-pagination>
  </div>
</template>

<script>
import { getUsers } from '@/api/user'

export default {
  data() {
    return {
      userList: [],
      page: 1,
      size: 10,
      total: 0
    }
  },
  created() {
    this.fetchData()
  },
  methods: {
    fetchData() {
      getUsers({
        page: this.page,
        size: this.size
      }).then(res => {
        this.userList = res.data.list
        this.total = res.data.total
      })
    },
    handleSizeChange(val) {
      this.size = val
      this.fetchData()
    },
    handleCurrentChange(val) {
      this.page = val
      this.fetchData()
    }
  }
}
</script>

权限控制

通过路由守卫实现权限验证:

router.beforeEach((to, from, next) => {
  const hasToken = localStorage.getItem('token')
  if (to.path === '/login') {
    next()
  } else {
    hasToken ? next() : next('/login')
  }
})

主题定制

修改 ElementUI 主题色:

vue elementui实现管理后台

  1. 安装主题生成工具:
    npm install element-theme -g
    npm install element-theme-chalk -D
  2. 初始化变量文件:
    et -i ./src/element-variables.scss
  3. 修改变量后编译:
    et
  4. main.js 中引入自定义主题:
    import '../theme/index.css'

优化建议

  • 使用动态路由配合后端权限数据
  • 封装高阶组件处理重复逻辑
  • 添加全局 loading 状态管理
  • 实现多标签页功能
  • 集成国际化方案
  • 使用 keep-alive 缓存页面状态

通过以上步骤可以快速搭建基于 Vue 和 ElementUI 的管理后台系统,具体实现可根据实际需求调整架构和功能模块。

标签: 后台vue
分享给朋友:

相关文章

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…

vue实现网站

vue实现网站

Vue 实现网站的基本步骤 Vue.js 是一个渐进式 JavaScript 框架,适合构建现代化的单页应用(SPA)或动态网站。以下是使用 Vue 实现网站的基本方法。 初始化 Vue 项目 使用…

vue核心实现

vue核心实现

Vue 核心实现原理 Vue.js 的核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现原理的详细说明: 响应式系统 Vue 使用 Object.defineProper…

vue实现gridlayout

vue实现gridlayout

Vue 实现 Grid Layout 使用 CSS Grid 布局 CSS Grid 是一种强大的布局系统,可以直接在 Vue 组件的样式中使用。通过定义网格容器和网格项,可以快速实现复杂的布局结构。…

vue下载实现

vue下载实现

Vue 下载实现方法 在 Vue 项目中实现文件下载功能可以通过多种方式完成,以下是几种常见的方法: 使用 <a> 标签实现下载 通过动态创建 <a> 标签并设置 href…

vue  怎么实现双击

vue 怎么实现双击

实现双击事件的方法 在 Vue 中实现双击事件可以通过 @dblclick 指令或自定义逻辑实现。以下是两种常见方法: 使用 @dblclick 指令 Vue 提供了原生 @dblclick…