我变成了曾经最讨厌的模样:路由屎山有感,Next 你是风暴也是风暴眼
0. 缘起
项目中有个跨端登录的需求,上次应该说到过用window.name来传信息,这次我们用query,就涉及到关于字符串的处理。然后!因为这项目还有动态路由,就导致全局路由守卫方法非常的臃肿繁复。我受不了了!
1. 来点小菜——字符串处理
1.1 分割 split
split可以用__正则__,(正则,我的卡密!)
let path = window.location.href;
let arr = path.split(/\?/);
1.2 替换replace
replace同样可以用__正则__
写了个工具函数挺适合取query中的参数的
function getKeyWord(keyword, array) {
let test = array.find((key) => {
return key.includes(keyword);
});
return test !== undefined ? test.replace(keyword, "") : "";
}
使用方法就是,传入1个关键词和需要查找该关键词的array,然后find关键词所在,再用replace方法剔除多余字符串。
2. Next 你是风暴也是风暴眼
next() 和 next('xxx') 是不一样的,区别就是前者不会再次调用router.beforeEach(),后者会!
这个beforeEach()无限调用原来是这个原因,我心痛泪流!
3. 不要写屎山!
路由各种跳转,各种转圈,我之前写的堪称一坨屎加在另一坨屎上面,看的都直犯恶心。今天又看到一个知乎回答,才让我下定决心,铲走屎山!
现在整个 Web 前端是「屎山」吗? - Piszz的回答 - 知乎 https://www.zhihu.com/question/511853234/answer/2318228892
PS: router跳转排查的时候用Message.info('...')的方法比console.log更直观!
人生到处知何似,应似飞鸿踏雪泥。