当前位置:首页 > 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 主题色:

  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 elementui实现管理后台

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

相关文章

vue实现预览

vue实现预览

Vue实现文件预览的方法 使用Vue实现文件预览功能可以通过多种方式完成,具体取决于文件类型(图片、PDF、视频等)。以下是几种常见文件类型的实现方案。 图片预览 通过<input type…

vue实现多级弹窗

vue实现多级弹窗

Vue 多级弹窗实现方法 方法一:使用动态组件与递归组件 在 Vue 中可以通过动态组件配合递归组件实现多级弹窗。定义一个基础弹窗组件,通过递归调用自身实现层级嵌套。 基础弹窗组件模板示例: &…

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动…

vue实现https

vue实现https

Vue 中实现 HTTPS 的步骤 在 Vue 项目中实现 HTTPS 主要涉及开发环境配置和生产环境部署。以下是具体方法: 开发环境配置(Vue CLI 或 Vite) 使用 mkcert…

vue实现剪辑

vue实现剪辑

Vue 实现视频剪辑功能 在Vue中实现视频剪辑功能通常需要结合HTML5的<video>元素和第三方库(如FFmpeg.js或Video.js)。以下是几种常见的实现方法: 使用FFm…

vue原理实现

vue原理实现

Vue 原理实现的核心机制 Vue.js 的核心原理基于响应式系统、虚拟 DOM 和模板编译。以下是其核心实现机制的分解: 响应式系统 Vue 使用 Object.defineProperty(Vu…