静态,动态的权限:====》
动态的
*** 动态权限
后台知道 权限 能访问路由
vip: 登录
svip: 登录 首页
const xxx = [
{ url: '/login', context: '@/pages/login', title"首页" },
{ url: '/home', context: '@/pages/home', },
]
// 递归
const routes = [
{
path: '/login',
component: import('@/pages/login'),
},
{
path: '/login',
component: import('@/pages/login'),
},
]
静态的:
静态权限:
登录 首页 表单 详情 会员页面 用户信息
、、权限
普通用户 -> 1
登录 首页
vip -> 2
登录 首页 表单
svip -> 3
登录 首页 表单 详情
大会员 -> 4
登录 首页 表单 详情 会员页面 用户信息
全局路由守卫
/login /home /form /detail /vip /user
const qx = {
1: [/login, /home],
2: [/login, /home, /form],
3: [/login, /home, /form, /detail],
4: [/login, /home, /form, /detail, /vip, /user],
}
登录 -> token 权限 1
pathname /form
qx[2] [/login, /home, /form]
if (!qx[1].includes(pathname)) {
}
函数的柯里化
var cost = (function () {
var args = [];
return function (opt) {
if (!opt) {
var money = 0;
for (var i = 0, l = args.length; i < l; i++) {
money += args[i];
}
return money;
} else {
// [100, 200, 300]
args.push(opt)
}
}
})()
cost(100); // 未真正求值
cost(200); // 未真正求值
cost(300); // 未真正求值
console.log(cost()); // 求值并输出:600
// ## async 原理
// async === generator + 自动执行器
function spawn (genF) {
return new Promise(resolve => {
const gen = genF()
// 1 nextF = () => gen.next(undefined)
// 2 nextF = () => gen.next(小花)
// 3 nextF = () => gen.next(小白)
// 4 nextF = () => gen.next(小蓝)
function step (nextF) {
// 1. { done: false, value: 小花 }
// 2. { done: false, value: 小白 }
// 3. { done: false, value: 小蓝 }
// 4. { done: true, value:[小花 小白 小蓝]}
let next = nextF()
if (next.done) {
return resolve(next.value)
}
// 1. () => gen.next(小花)
// 2. () => gen.next(小白)
// 3. () => gen.next(小蓝)
step(() => gen.next(next.value))
}
step(() => gen.next(undefined))
})
}