Vue中使用Elememt-UI构建管理后台(详细教程)

本篇文章给大家详细分享了vue elememt-ui构建管理后台的过程以及相关代码实例,一起参考学习下。

安装

我使用的是 vue-cli 初始化项目,命令如下:

npm i -g vue-climkdir my-project && cd my-projectvue init webpack

登录后复制

修改 package.json 文件:

..."dependencies": { "vue": "^2.5.2", "vue-router": "^3.0.1", "element-ui": "^2.0.7", // element-ui "axios": "^0.17.1" // http 请求库}...

登录后复制

之后执行 npm install 进行安装依赖,如果安装速度有点慢的话,可以试一下 cnpm ,具体安装和用法自行查找。

立即学习“前端免费学习笔记(深入)”;

简单介绍下项目的目录结构:

├─build // 构建配置├─config // 配置文件├─src // vue 开发源文件目录├────assets // css/js 文件├────components // vue 组件├────router  // 路由├────App.vue  // 启动组件├────main.js // 入口文件├─static // 静态文件目录├─test // 测试目录

登录后复制

之后在项目根目录执行 npm run dev ,打开浏览器输入 http://localhost:8080 就可以查看了。

目标

登录页面,登录,退出功能

首页,调用接口渲染列表

路由

路由使用的是 vue-router,具体用法可参考 官方文档

我们这里需要两个路由:

src/router/index.js

import Vue from 'vue'import Router from 'vue-router'import Index from '@/components/Index'import Login from '@/components/Login'Vue.use(Router)const routers = new Router({ routes: [  {   path: '/index',   name: 'index',   component: Index  },  {   path: '/login',   name: 'login',   component: Login  } ]})routers.beforeEach((to, from, next) => { if (to.name !== 'login' && !localStorage.getItem('token')) {  next({path: 'login'}) } else {  next() }})export default routers

登录后复制

登录页面

src/components/Login.vue

 

                                     登录       

import $http from '@/api/'import config from '@/config'export default { data () { return { user: { name: '', password: '' } } }, mounted: function () { var token = localStorage.getItem('token') if (token) { this.$router.push('/index') } }, methods: { login: function () { var data = { grant_type: 'password', client_id: config.oauth_client_id, client_secret: config.oauth_secret, username: this.user.name, password: this.user.password } var _this = this $http.login(data).then(function (res) { if (res.status === 200) { $http.setToken(res.data.access_token) _this.$message({ showClose: false, message: '登录成功', type: 'success' }) _this.$router.push('/index') } else { _this.$message({ showClose: false, message: '登录失败', type: 'error' }) } }) } }}.login{ width: 300px; margin: 100px auto; background-color: #ffffff; padding: 30px 30px 5px; border-radius: 5px;}

登录后复制

首页

src/components/Index.vue

 

                     

import $http from '@/api/'export default { data () { return { tableData: [], total: 0, loading: false } }, mounted: function () { this.getList() }, methods: { pageList: function (page) { this.search.page = page this.getList() }, getList: function () { var _this = this _this.loading = true $http.index().then(function (res) { if (res.status === 200) { _this.tableData = res.data.data.lists _this.total = res.data.data.total } _this.loading = false }) } }}

登录后复制

App

src/App.vue

 

         

Admin

               首页     列表             Vue中使用Elememt-UI构建管理后台(详细教程)           基本资料      安全退出                   Copyright © 2017 Flyerboy All Rights Reserved      

import Menus from '@/components/Menu'export default { name: 'App', data () { return { token: false } }, mounted: function () { this.token = localStorage.getItem('token') ? true : false }, watch: { '$route.path': function ($newVal, $oldVal) { this.token = localStorage.getItem('token') ? true : false } }, methods: { operate: function (command) { if (command === '/logout') { localStorage.removeItem('token') this.$router.push('login') } else { this.$router.push(command) } } }, components: { Menus }}body{ margin: 0; padding: 0; background-color: #eeeeee;}.header{ position: absolute; top: 5px; right: 20px;}.header img{ width: 38px; height: 38px; border-radius: 20px; border: 1px solid #aaaaaa;}#app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}.main{ padding: 20px; min-height: 600px; margin-bottom: 20px;}.main table{ background: #ffffff;}.left-menu{ background-color: #33374B;}.logo{ padding: 20px 0 15px 20px; font-size: 24px; border-bottom: 2px solid #3a8ee6;}.logo a{ color: #ffffff; text-decoration: none;}.left-menu .el-menu{ border-right: 0;}.breadcrumb{ line-height: 40px; padding: 5px 20px; background: #ffffff;}.breadcrumb span{ color: #069; font-weight: normal;}.breadcrumb .active{ color: #aaaaaa;}.page{ margin: 20px 0 0; margin-left: -10px;}.page .el-pager li.number{ background-color: #ffffff;}.el-submenu .el-menu-item{ padding-left: 60px !important;}.footer{ position: fixed; bottom: 0; right: 0; font-size: 12px; color: #888888; padding: 15px 20px; text-align: center; background-color: #ffffff; margin-top: 40px;}

登录后复制

调用 API

src/api/index.js

import axios from 'axios'axios.defaults.baseURL = 'http://localhost:8000/'axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'axios.defaults.headers.common['Authorization'] = 'Bearer ' + localStorage.getItem('token')export default { setToken: function (token) {  localStorage.setItem('token', token)  axios.defaults.headers.common['Authorization'] = 'Bearer ' + token }, login: function (param) {  return axios.post('oauth/token', param) }, index: function (params) {  return axios.get('api/user/list', {   params: params  }) }}

登录后复制

config

src/config.js 这里配置登录 oauth 需要的 client_id 和 secret

export default { oauth_client_id: 2, oauth_secret: ''}

登录后复制

main.js

src/main.js

import Vue from 'vue'import App from './App'import router from './router'import ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css'Vue.use(ElementUI)Vue.config.productionTip = falsenew Vue({ el: '#app', router, components: { App }, template: ''})

登录后复制

api 接口

主要用到两个接口,一个是 api/oauth/token 登录获取 token 接口,一个获取列表 api/user/list。

第一个接口是用到 laravel oauth,第二个接口直接是一个简单的查询用户列表接口,详细讲会在下一篇文章中讲述。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

利用vue如何实现将时间戳转换成自定义时间格式

利用vue和element-ui如何实现表格内容分页

详细讲解FastClick源码(详细教程)

以上就是Vue中使用Elememt-UI构建管理后台(详细教程)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2750062.html

(0)
上一篇 2025年3月8日 05:30:22
下一篇 2025年3月8日 05:30:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Java开发:如何使用容器技术实现应用部署和管理

    标题:Java开发:容器技术在应用部署和管理中的应用示例 引言:随着云计算和微服务架构的兴起,容器技术成为了现代化应用部署和管理的重要组成部分。在Java开发中,通过使用容器技术,可以实现快速部署、轻量级管理、服务隔离等优势。本文将介绍如何…

    2025年3月7日
    200
  • 探索Tomcat的实际应用价值:为什么它是最佳的Web服务器部署和管理选择?

    解密Tomcat的实用价值:为什么它是部署和管理Web服务器的理想选择? 导语:在当今互联网时代,Web服务器是非常重要的基础设施之一。Tomcat作为一个开源的Java Servlet容器,其实用价值在部署和管理Web服务器方面无疑是一个…

    2025年3月6日
    200
  • 使用conda进行Python库的安装和操作

    通过conda安装和管理第三方Python库 Python是一种功能强大的编程语言,广泛应用于数据分析、机器学习、人工智能等领域。而在Python编程中,我们经常需要使用各种第三方库来扩展Python的功能。通过conda来安装和管理第三方…

    2025年3月5日
    200
  • 便捷管理Python虚拟环境:利用conda

    使用conda轻松管理Python虚拟环境 随着Python的流行和应用领域的不断扩大,开发者们经常需要在同一机器上使用不同的Python版本和库。这时候,使用虚拟环境就变得非常重要了。虚拟环境可以帮助我们在同一台机器上轻松管理多个独立的P…

    2025年3月5日
    200
  • win8启动项管理

    在我们日常使用电脑时,经常在开机的时候会自动启动一些软件导致我们的开机速度变慢,那么有没有什么方法能自己管理开机的启动项呢,其实是可以的,这里就给大家介绍一下该怎么管理win8系统下的启动项。 win8启动项管理 1、 按win+r,在运行…

    2025年3月5日 互联网
    200
  • 如何在附件管理模块中增加对FTP 上传和预览的支持?

    在之前介绍的附件管理模块里面《winform开发框架之通用附件管理模块》以及《winform开发框架之附件管理应用》,介绍了附件的管理功能,通过对数据库记录的处理和文件的管理,实现了附件文件和记录的整合管理,可以运用在单机版的winform…

    2025年3月3日 编程技术
    200
  • 微服务架构中如何处理服务的生命周期和管理?

    随着互联网和移动互联网的快速发展,软件开发变得越来越复杂,而微服务架构已成为当今软件开发的主流趋势之一。微服务架构是一种将大型应用程序划分为多个小型服务的方法。每个服务都具有特定的业务功能,并且可以独立地进行开发、测试和部署。在这种架构中,…

    编程技术 2025年3月2日
    200
  • 谷歌管理器如何添加和管理用户

    如何管理谷歌浏览器中的多个用户?谷歌浏览器支持多个用户同时登录使用,当我们跨设备登录时,尤其当我们拥有众多用户时,对其进行添加和管理就变得十分重要。如果你对此操作感到困惑,不用担心!php小编西瓜已经为你准备了详细的步骤教程。继续阅读本文,…

    2025年3月2日 互联网
    200
  • Python的Django框架下管理站点的基本方法

    对于某一类网站, 管理界面 是基础设施中非常重要的一部分。 这是以网页和有限的可信任管理者为基础的界面,它可以让你添加,编辑和删除网站内容。 一些常见的例子: 你可以用这个界面发布博客,后台的网站管理者用它来润色读者提交的内容,你的客户用你…

    编程技术 2025年2月28日
    200
  • Python的批量远程管理和部署工具Fabric用法实例

    本文实例讲述了python的批量远程管理和部署工具fabric用法。分享给大家供大家参考。具体如下: Fabric是Python中一个非常强大的批量远程管理和部署工具,常用于在多个远程PC上批量执行SSH任务. 常见的使用方法大概总结如下:…

    编程技术 2025年2月28日
    200

发表回复

登录后才能评论