学习vue不常用容易忘的东西

目录

添加element依赖

全局引入axios

引入mockjs

css相关

路由声明周期函数

动态添加路由

 全局使用methods分配权限


添加element依赖

import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

全局引入axios

import axios from './axios'
Vue.prototype.$axios = axios 

引入mockjs

require("./mock.js") //引入mock数据,关闭则注释该行

css相关

/* 弹性布局 */
display: flex;
/*垂直方向居中*/
align-items: center;
/* 文字居中 */
text-align: center;
/* 靠左布局 */
float: left;

路由声明周期函数

/**
 * router.beforeEach就是路由进入前的周期
 * to:跳转到哪个路由
 * from:从哪个路由来
 * next:让他继续走
 */
router.beforeEach((to, from, next) => {
   
});

动态添加路由

let nav = [
        {
            title: "系统管理",
            name: "SysManage",
            icon: "el-icon-location",
            path: "",
            component: "",
            children: [
                {
                    title: "用户管理",
                    name: "UserManagement",
                    icon: "el-icon-user",
                    path: "/sys/user",
                    component: "sys/UserManagement",
                    children: []
                },
            ]
        },
    ];

 let newRouter = router.options.routes;//获得我们现在的路由信息

nav.forEach(menu => {
                if (menu.children != null) {//如果子组件不为空
                    menu.children.forEach(children => {
                        //转化成路由对象
                        let route = menuToRoute(children);
                        //把路由添加到路由管理中
                        if (route) {
                        //0并不是想添加到的路由
                            newRouter[1].children.push(route)
                        }
                    })
                }
            //第一次加载为false,后面避免后面刷新重复加载
            routerState = true;
            store.commit("changeRouterState", routerState);
            //对路由进行绑定,vue的路由可以通过addRoutes动态添加
            router.addRoutes(newRouter);
            });

//导航转成路由
//路由就三个参数name,path,component
function menuToRoute(children) {
    if (children.component != null) {
        //把导航里的参数变成路由参数
        let route = {
            name: children.name,
            path: children.path,
        };
        //路由里组件赋值方法的写法
        route.component = () => import('@/views/' + children.component);
        return route;
    } else {
        return undefined;
    }

}

 全局使用methods分配权限

import Vue from "vue";
import menus from "./store/modules/menus";

Vue.mixin({
    methods: {
        hasAuth(perm) {
            //从全局参数拿到权限信息
            let authorization = this.$store.state.menus.authorizationList;
            return authorization.indexOf(perm) > -1;
        }
    }
})

//记得在main.js中引用
import global from './globalFun'

//之后在某个需要权限控制的按键调用这全局方法
<el-button type="primary" @click="addRole()" 
v-if="hasAuth('sys:user:save')">新增</el-button>

axios固定配置

import axios from "axios";
import router from "./router";
import Element from "element-ui"

axios.defaults.baseURL = "http://localhost:8081"

const request = axios.create({
    timeout: 5000,
    headers: {
        'Content-Type': "application/json; charset=utf-8"
    }
})

request.interceptors.request.use(config => {
    config.headers['Authorization'] = localStorage.getItem("token")
    return config
})

request.interceptors.response.use(
    response => {

        console.log("response ->" + response)

        let res = response.data

        if (res.code === 200) {
            return response
        } else {
            //更换别的框架的话记得换
            Element.Message.error(!res.msg ? '系统异常' : res.msg)
            return Promise.reject(response.data.msg)
        }
    },
    error => {

        console.log(error)

        if (error.response.data) {
            error.massage = error.response.data.msg
        }

        if (error.response.status === 401) {
            router.push("/login")
        }
        //更换别的框架的话记得换
        Element.Message.error(error.massage, {duration: 3000})
        return Promise.reject(error)
    }
)

export default request

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值