美文网首页
vue后台模块学习-3

vue后台模块学习-3

作者: 客观开发者 | 来源:发表于2021-11-16 13:11 被阅读0次

继续挖掘vue

vue 后台登录和 权限模块开发。

https://juejin.cn/post/6959388179380043784
https://shimo.im/docs/pxwyJHgqcWjWkTKX/read
(案例学习)
https://mp.weixin.qq.com/s/uD5_NgHryfJGWEP4uxlA5w
这个步骤和我的差不多思路。我没有使用shiro
还有一个b站里面

登录功能的完成。

axios 的使用,初始化。

// create an axios instance
const service = axios.create({
  baseURL: 'http://192.168.1.138:1000', // url = base url + request url
  timeout: 5000,
  withCredentials: false
})
 loginForm:{
                name:'admin',
                pass:'123456'
            }
// 为给定 ID 的 user 创建请求
axios.post('/login')
  
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

// 上面的请求也可以这样做
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

网络请求会遇到 跨域情况。这个几个项目里面都说了这一点。。。
基本都是对WebMvcConfigurer 拦截的重写。

/**
     * 跨域问题解决 vue 访问出现的
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }

开始写 首页 了。
学习vue 案例。开始实战中。
在router 里面添加index js 中添加路径

import home from '@/views/home'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: home
    },
    {
      path: '/login',
      name: 'login',
      component: login
    },
  ]
})

登录成功之后,进入首页。。。

localStorage.setItem("Token", data.token)
                // console.log(data.token)
                // alert(response.data.token);
                this.$router.push({
                    path: '/'
                }) // 登录成功之后重定向到首页
image.png

代码

<template>
  <el-container style="height: 100%">
    <!--左侧 菜单-->
    <el-aside width="auto">
      <el-menu :collapse='!showSidebar' :default-active="this.$route.path"
               class="el-menu-vertical-demo" text-color="#595959">
        <!-- logo -->
        <div style="color: #1890ff; height: 40px; text-align: center; ">
          <h1 style="font-size: 20px;" >xxxxx</h1>
          <!--<h1 >125588</h1>-->
        </div>

        <!-- 菜单树 -->
        <template v-for="item in menuList">
          <el-submenu :index="item.url" :key="item.id" v-if="item.children.length != 0">
            <template slot="title">
              <i :class="item.icon"></i>
              <span slot="title">{{item.name}}</span>
            </template>
            <el-menu-item :index="child.url" :key="child.id" @click="menuAction(child.url)"
                          style="margin-left: 10px;" v-for="child in item.children">
              {{child.name}}
            </el-menu-item>
          </el-submenu>
          <el-menu-item :index="item.url" :key="item.id" @click="menuAction(item.url)"
                        v-if="item.children.length === 0">
            <i :class="item.icon"></i>
            <span @click="menuAction(item.id)" slot="title">{{item.name}}</span>
          </el-menu-item>
        </template>

      </el-menu>
    </el-aside>
    <!-- 右边详情界面 -->

    <el-container>
      <el-header>
        <!-- 菜单树控制按钮 -->
        <span>
          <i :class="showSidebar ? 'el-icon-s-unfold' : 'el-icon-s-fold'" @click.stop="switchSidebar"
             style="font-size: 25px;cursor:pointer;"></i>
        </span>

        <!-- 右侧 -->
        <div class="header-right">
          <el-dropdown style="margin-left: 5px;">
            <span class="el-dropdown-link">
              <i class="el-icon-user-solid" style="font-size: 20px">
                <span style="font-size: 15px; margin-left: 5px; ">{{loginUser.name}}</span>
              </i>
              <i class="el-icon-arrow-down el-icon--right"></i>
            </span>
            <el-dropdown-menu slot="dropdown" style="padding-bottom: 4px;">
              <el-dropdown-item
                @click.native="menuAction('/loginDetail',{code: loginUser.code})">个人中心
              </el-dropdown-item>
              <el-dropdown-item
                @click.native="menuAction('/modifyPassword',{code: loginUser.code})">修改密码
              </el-dropdown-item>
              <el-dropdown-item @click.native="logout" divided>退出登录</el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
        </div>
      </el-header>
      <el-main>
        <router-view></router-view>
      </el-main>
    </el-container>

  </el-container>
</template>

methods 是方法的地方。。。
例如退出登录

 methods: {
      /*菜单显示和隐藏*/
      switchSidebar () {
        this.showSidebar = !this.showSidebar
      },
      /*菜单的展示和显示*/
      menuAction (url, query) {
        this.$router.push({path: url, query: query})
      },
      logout(){
        localStorage.clear()
        this.$router.push({
          path: '/login'
        })
      },
    },

刚启动home 的页面的时候获取数据

/**
     * 组件实例创建完成,属性已绑定,但DOM还未生成,$ el属性还不存在
     */
    created() {

    },

这里获取权限和用户信息
权限先写死。。。一个json 串。。
然后在写两个界面。。。route.push 就可以了。。。


image.png

这样做就需要把route中index.js 修改了一下。


export default new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      meta: {tab: false},
      component: home,
      children: [
        {
          path: '/home',
          name: 'index',
          component: index
        },
        {
          path: '/info',
          name: 'info',
          component: info
        },
      ]
    },
    {
      path: '/login',
      name: 'login',
      component: login
    },

  ]
})

home 下有俩个路径,就代表着有俩个 文件,点击就是上面的效果了。。
登录路径没有在里面,所以登录时其它的界面。。。

首页搭建完成。开始从后台获取数据,然后显示出来。

首页几乎是静态的页面。
rout push 路径,只要在首页里面是他自路径就行了。

最近看了一篇文章
https://juejin.cn/post/6951649464637636622

还有

发现之前写的vue 后台模块1中既有vue2的内容,也有vue3的内容。
之后都是vue2的内容了。

至此,更正一下。。。
vue 模块环境不同而已。

vue3 的环境看
https://juejin.cn/post/6951649464637636622
vue2的可以继续看。

相关文章

  • vue后台模块学习-3

    继续挖掘vue vue 后台登录和 权限模块开发。 https://juejin.cn/post/69593881...

  • vue后台模块学习-2

    后台模块搭建 1,添加element-ui 这里多了一个 出现空格问题。eslint 查询出来并且警告了。 去掉空...

  • vue后台模块学习-1

    后台模板https://github.com/ant-design/ant-design-pro/[https:/...

  • vue后台模块学习-4

    工具使用 1、使用vue ui 环境image.png使用vue ui 。如果不起作用 再运行 vue ui 创建...

  • vue与element表格数据转换(2)

    vue与element表格数据转换(1) 在后台管理系统表格模块中,我们请求回来的时间数据,后台返给我们的不是有时...

  • Vue Webpack ElementUI 后台系统管理

    一个简单的Vue后台的系统模板 这个系统是基于Vue+ElememtUI+webpack模块化开发的系统,涉及到路...

  • node.js学习(4)——form提交数据(get)

    上一节-node.js学习(3)— http模块与fs模块综合 1.常用的提交数据方式 通常我们前台从后台请求数据...

  • 2018-10-14

    完成了宝联灯后台页面,开始学习vue框架

  • iot_system_design

    1 后台后台框架数据库设计数据库驱动后台逻辑队列服务2 前端前端工具前端框架界面设计3 设备端通信模块控制模块控制...

  • 2021vue面试题+答案

    2021vue面试题+答案 vue视频教程系列: Vue3+ElementPlus+Koa2 全栈开发后台系统 视...

网友评论

      本文标题:vue后台模块学习-3

      本文链接:https://www.haomeiwen.com/subject/jkcygltx.html