Vue3 + Element-UI 搭建一个后台管理系统框架模板

2023-11-18

概述

本文将介绍如何基于Vue3和element-ui搭建一个后台管理系统框架模板。我们将详细讲解代码流程,并提供详细的说明。

技术栈

  • Vue3
  • Element-ui
  • Axios

前置知识

本文假设读者已经熟悉Vue3和Element-ui的基本使用方法,并且对Axios有一定的了解。

步骤

步骤1:创建Vue3项目

我们可以使用Vue CLI来创建一个Vue3项目,具体步骤如下:

  1. 打开命令行工具,在任意目录下输入以下命令:

    vue create {项目名称}
    
  2. 选择“Manually select features”选项(手动选择特性),按回车键进入下一步。

  3. 按下空格键选择以下特性:

    • Choose Vue version(选择Vue版本):选择“3.x”。
    • Babel(使用Babel编译器):选中。
    • Router(使用Vue Router进行路由管理):选中。
    • Vuex(使用Vuex进行状态管理):选中。
    • CSS Pre-processors(使用CSS预处理器):选中。
    • Linter / Formatter(使用ESLint进行代码检查和格式化):选中。
  4. 确认选择,按回车键进入下一步。

  5. 选择CSS预处理器,我们可以使用Sass或Less,这里以Sass为例,按下空格键选中“Sass/SCSS (with dart-sass)”选项,按回车键确认选择。

  6. 确认是否使用history模式进行路由管理,这里我们选择“n”(不使用),按回车键进入下一步。

  7. 确认是否安装依赖,我们选择“npm”或“yarn”,按回车键确认选择。

  8. 等待依赖安装完成,项目创建成功。

步骤2:安装Element-ui

我们可以使用npm或yarn来安装Element-ui,具体步骤如下:

  1. 打开命令行工具,在项目根目录下输入以下命令:

    npm install element-plus --save
    或
    yarn add element-plus
    
    
  2. 等待依赖安装完成,Element-ui安装成功。

步骤3:配置Element-ui

我们需要在main.js中引入Element-ui并按需引入组件,具体步骤如下:

  1. 在main.js中引入Element-ui:

    import { createApp } from 'vue'
    import App from './App.vue'
    import ElementPlus from 'element-plus'
    import 'element-plus/lib/theme-chalk/index.css'
    
    createApp(App).use(ElementPlus).mount('#app')
    
    
  2. 在需要使用的组件中按需引入:

    import { ElButton, ElInput } from 'element-plus'
    
    export default {
      components: {
        ElButton,
        ElInput
      }
    }
    
    

步骤4:封装Axios

我们可以在项目中封装Axios,方便进行网络请求,具体步骤如下:

  1. 在src目录下创建一个api目录,用于存放Axios相关代码。

  2. 在api目录下创建一个index.js文件,用于封装Axios:

    import axios from 'axios'
    
    const instance = axios.create({
      baseURL: process.env.VUE_APP_BASE_API,
      timeout: 5000,
      headers: {
        'Content-Type': 'application/json;charset=utf-8'
      }
    })
    
    instance.interceptors.request.use(
      config => {
        const token = localStorage.getItem('token')
        if (token) {
          config.headers.Authorization = token
        }
        return config
      },
      error => {
        return Promise.reject(error)
      }
    )
    
    instance.interceptors.response.use(
      response => {
        return response.data
      },
      error => {
        return Promise.reject(error)
      }
    )
    
    export default instance
    
    
  3. 在main.js中引入Axios:

    import axios from './api'
    
    const app = createApp(App)
    
    app.config.globalProperties.$http = axios
    
    

步骤5:创建路由

我们需要在router/index.js文件中配置路由,具体步骤如下:

  1. 在router目录下创建一个index.js文件,用于配置路由:

    import { createRouter, createWebHistory } from 'vue-router'
    import Home from '../views/Home.vue'
    import About from '../views/About.vue'
    
    const routes = [
      {
        path: '/',
        name: 'Home',
        component: Home
      },
      {
        path: '/about',
        name: 'About',
        component: About
      }
    ]
    
    const router = createRouter({
      history: createWebHistory(process.env.BASE_URL),
      routes
    })
    
    export default router
    
    
  2. 在main.js中引入路由:

    import router from './router'
    
    const app = createApp(App)
    
    app.use(router)
    
    

步骤6:创建页面

我们需要在views目录下创建页面,具体步骤如下:

  1. 在views目录下创建一个Home.vue文件,用于展示首页内容:

    <template>
      <div>
        <h1>首页</h1>
        <el-button type="primary">点击按钮</el-button>
      </div>
    </template>
    
    <script>
    export default {
      name: 'Home'
    }
    </script>
    
    <style scoped>
    h1 {
      font-size: 24px;
      color: #333;
      margin-bottom: 20px;
    }
    </style>
    
    
  2. 在views目录下创建一个About.vue文件,用于展示关于页面内容:

    <template>
      <div>
        <h1>关于</h1>
        <el-input placeholder="请输入内容"></el-input>
      </div>
    </template>
    
    <script>
    export default {
      name: 'About'
    }
    </script>
    
    <style scoped>
    h1 {
      font-size: 24px;
      color: #333;
      margin-bottom: 20px;
    }
    </style>
    
    

步骤7:创建菜单

我们可以使用Element-ui的菜单组件创建菜单,具体步骤如下:

  1. 在App.vue中添加菜单:

    <template>
      <div id="app">
        <el-container>
          <el-header>Header</el-header>
          <el-container>
            <el-aside width="200px">
              <el-menu :default-openeds="['1']">
                <el-submenu index="1">
                  <template slot="title">导航一</template>
                  <el-menu-item-group>
                    <template slot="title">分组一</template>
                    <el-menu-item index="/">首页</el-menu-item>
                  </el-menu-item-group>
                  <el-menu-item-group>
                    <template slot="title">分组二</template>
                    <el-menu-item index="/about">关于</el-menu-item>
                  </el-menu-item-group>
                </el-submenu>
              </el-menu>
            </el-aside>
            <el-main>
              <router-view></router-view>
            </el-main>
          </el-container>
          <el-footer>Footer</el-footer>
        </el-container>
      </div>
    </template>
    
    <script>
    export default {
      name: 'App'
    }
    </script>
    
    
  2. 在router/index.js中添加菜单对应的路由信息:

    const routes = [
      {
        path: '/',
        name: 'Home',
        component: Home
      },
      {
        path: '/about',
        name: 'About',
        component: About
      }
    ]
    
    

总结

本文介绍了如何基于Vue3和Element-ui搭建一个后台管理系统框架模板。我们从创建Vue3项目、安装和配置Element-ui、封装Axios、创建路由、创建页面和创建菜单等方面进行了详细的讲解。希望本文能够帮助读者更好地理解Vue3和Element-ui的使用方法,以及如何构建后台管理系统框架模板。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue3 + Element-UI 搭建一个后台管理系统框架模板 的相关文章

  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • 在为 RXJS 可观察量编写测试时,如何避免让调度程序通过我的业务逻辑?

    我发现使某些测试通过的唯一方法是显式地将调度程序传递给函数 为了便于说明 请考虑以下函数 function doStuff stream return stream delay 100 filter x gt x 2 0 map x gt
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 未捕获的错误:找不到模块“jquery”

    我在用Electron https github com atom electron制作桌面应用程序 在我的应用程序中 我正在加载一个外部站点 Atom 应用程序之外 可以说http mydummysite index html http
  • IE11不监听MSFullscreenChange事件

    我正在尝试使用 Bigscreen js 在 IE11 中使用全屏 但 IE11 不监听 MS FullscreenChange 事件 document addEventListener MSFullscreenChange functio
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 在 GWT 中,在任何主机页标记上添加事件处理程序

    我想为任何标签添加 MouseOver 事件处理程序 举个例子 我想为旧版 HTML 页面中的每个锚点页面添加事件处理程序 继GWT指南 http code google com webtoolkit doc 1 6 DevGuideUse

随机推荐

  • Bicubic Interpolation (双三次插值)

    在Wikipedia http en wikipedia org wiki Bicubic interpolation 上找到了bicubic的描述 不过它只给出了知道导数情况下的公式 后来在CSDN上找到了C语言的算法描述 http to
  • k8s-node节点未找到flannel网络

    k8s node节点的flannel的IP地址不正确 问题描述 问题分析 1 检查node节点的cni和flannel网卡地址 2 检查master节点的flannel服务 如何重置flannel网络 1 删除node节点 master 2
  • unity中Input.Touch详解

    相关的api 1 Touch类 用来记录一个手指触摸在屏幕上的状态与位置的各种相关数据 这其它中只有两个属性是你要注意的 就是Touch fingerId和Touch tapCount Touch fingerId 一个Touch的标识 I
  • Linux常用压缩命令(tar,tgz,gzip,zip,rar)

    Linux常用于压缩和解压tar tgz gzip zip rar 一 tar 1 压缩命令 tar cvf examples tar files dir files dir表示要压缩文件或者目录 说明 c create create a
  • llama.cpp试用

    显存占用是真的低 13B vicuna int4量化 example chat 13B sh 正常问答交流 不到2G的占用 相比之下 vicuna7B原版int8量化 8G显卡下 cuda会OOM 原版不支持int4量化 chatglm6B
  • Android应用底部导航栏(选项卡)实例

    现在很多android的应用都采用底部导航栏的功能 这样可以使得用户在使用过程中随意切换不同的页面 现在我采用TabHost组件来自定义一个底部的导航栏的功能 我们先看下该demo实例的框架图 其中各个类的作用以及资源文件就不详细解释了 还
  • Denoising diffusion implicit models 阅读笔记

    Denoising diffusion probabilistic models DDPMs 从马尔科夫链中采样生成样本 需要迭代多次 速度较慢 Denoising diffusion implicit models DDIMs 的提出是为
  • 其他需要整理

    1 Kinect OpenNI学习笔记之6 获取人体骨架并在Qt中显示 http www cnblogs com tornadomeet archive 2012 10 03 2710737 html
  • 人脸识别产品相关知识整理

    引言 这个文章是我18年初整理的一个基础人脸识别产品知识 人脸识别规范 标准和白皮书 我在工标网站上找到了公安部的 GA T 1093 2013 出入口控制人脸识别系统技术要求 和 GA T 1126 2013 近红外人脸识别设备技术要求
  • 理解Java的IO 流

    按照流的流向来分 可以分为输入流和输出流 输入流 只能从中读取数据 而不能向其中写数据 输出流 只能向其写出数据 而不能从中读取数据 对于上面的左图来说 数据从内存到硬盘 通常我们称为输出流 也就是说 这里的输出 都是从程序运行所在的内存角
  • hive中如何取到每个顾客最新交易

    hive e use db select t advertId t exposureNum from select advertId exposureNum ROW NUMBER OVER PARTITION BY advertId ORD
  • 《计算机网络》——第四章知识点

    第四章思维导图如下 网络层向上只提供灵活的 无连接的 尽最大努力交付的数据报服务 主要任务是把分组 IP数据报 从通过路由选择与转发从源端传到目的端 为分组交换网上的不同主机提供通信服务 互联网可以由多种异构网络互连组成 IP数据包格式 I
  • 【突变检验方法二】MATLAB实现贝叶斯突变检测

    MATLAB实现贝叶斯突变检测 1 贝叶斯突变检测 2 原理 3 MATLAB相关代码 3 1 调用函数 3 2 案例 参考 另 其它语言实现贝叶斯突变检测 1 贝叶斯突变检测 贝叶斯突变检测属于概率突变检测方法 其特点是能给出突变点的概率
  • json数据如何存入到cookie中,如何获取

    1 引入相对应的cookie js插件如下 例如 button click function var username input name username val var password input name password val
  • scrapy爬虫爬取多网页内容

    摘要 此案例是爬取目标网站 https tipdm com 的新闻中心板块的公司新闻中所有新闻的标题 发布时间 访问量和新闻的文本内容 1 创建scrapy项目 我使用的是 Anaconda prompt 我们使用如下命令创建scrapy项
  • 视线估计、凝视目标估计相关评价指标

    1 TP TN FP FN qquad T F表示待分类目标的GT值 qquad P N表示预测到目标的正反例 在目标检测类任务中 qquad TP 表示正确检测到待检测目标
  • vcruntime140_1.dll丢失怎么办?vcruntime140_1.dll丢失最新解决方法

    如果您在使用某些软件或游戏时遇到了 vcruntime140 1 dll丢失 的错误提示 那么您需要采取一些措施来解决这个问题 以下三种解决方案都能解决vcruntime140 1 dll丢失问题 第一种解决方法 直接使用dll修复程序进行
  • C语言 mktime() gmtime()实现——亲测正确性

    前言 写此文章是因为有的嵌入式设备编程时不支持
  • node_modules安装及卸载

    1 安装 npm install 安装tb镜像 npm install g cnpm registry https registry npm taobao org 2 卸载 1 npm install rimraf g 2 rimraf n
  • Vue3 + Element-UI 搭建一个后台管理系统框架模板

    概述 本文将介绍如何基于Vue3和element ui搭建一个后台管理系统框架模板 我们将详细讲解代码流程 并提供详细的说明 技术栈 Vue3 Element ui Axios 前置知识 本文假设读者已经熟悉Vue3和Element ui的