1.前端url取参数以对象展示2.el-tree在vue3中全选和展开3.瀑布流4.瀑布流——前端流行网页布局方式5.vue中v-bind和v-model的区别是什么6.Vue中key的作用7.在Vue 3中,与Vue 2相比,有一些改进和优化的diff算法。8.浏览器解析html9.浏览器渲染HTML10.Object.entries()11.vue实现虚拟dom转换成真是dom的原理12.全局封装组件处理并发请求不连续的loading13.为什么vue数组下标修改监听不到14.Vue 3 在某些场景下可能表现出比 Vue 2 更低的性能15.vue里表单验证的v-model.number的坑16.有意思的css17.js原生语音转文字18.js手写一个call19.js手写一个apply20. 手写一个 bind 方法21.js寄生组合式继承22.react中的useState修改状态获取最新状态值23.函数柯里化js24.axios请求中断_下载中断和下载进度25.axios请求重试_核心原理26.axios请求重试_axios-retry插件27.虚拟列表-渲染 10 万条数据28.vue-office 组件29.threejs30.把原生 DOM 标签转换后加入到 3D 场景空间中显示31.three.js 物体要使用光线投射技术,计算是否点击位置与物体有交叉32.threejs基本函数33.二分查找算法34.js判断字符串是否连贯35.世界坐标系和模型坐标系36.设置车模型中每个小物体 castShadow = true37.Vue3 echarts 组件化使用 resizeObserver38.网页验证码的作用 *网页中几种常见验证码39.多个装饰器一起es6装饰器40.flex属性41.移动端兼容问题42.那什么是URL、URI、URN?43.threejs的坐标渲染和着色44.渲染管线45.着色器46.基于 three.js 加载器分别加载模型47.echarts自适应大屏方案 亲测有用48.js中关于class类的继承49.有趣的工具50.关于threejs中鼠标左右移动,左动看右边,右动看左边51.有趣的知识点threejs52.uniapp底层跨端原理53.防止XSS(跨站脚本攻击)漏洞54.启动vite和electron项目配置多个主进程55.九宫格css56.css伪类选择器57.uniapp关于uni.getUserProfile的使用58.uniapp有意思的api之openSetting59.处理flex布局60.uniapp登录板块封装(旧接口getUserInfo)61.uniapp获取用户信息62.在项目中使用UEditor碰到的几个问题63.一维数组转二位数组64.使用此函数对数组进行分块,并在最后一组添加特定的值65.如果win报错无法加载文件 C:\Users\xx\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本66.win系统执行脚本报错策略更改无法加载文件 C:\Users\xx\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本67.阅读时间缓存(快应用)68.uniapp去除button的边框69.uniapp中OnShow获取缓存70.js图片懒加载,在不做分页的情况下的解决方案71.width:100%与width:auto区别72.leetcode1047字符串反复去重(栈)73.记录一次uniapp使用scrollview74.微前端(矩阵项目)代码将单个文件合并到指定分支75.自适应高度的过渡76.实现下划线动画77.js不同类型比较78.登录后继续浏览之前的页面79.sse80.关于小说阅读前端翻页插件推荐turn.js81.数组扁平化82.好玩的vue组件83.DOMRect对象84.前端三大系列图解释85.js中关于return和if条件处理86.关于文心一言不能打开F12开发者工具87.js文字处理两端展示中间省略号88.[popover, select] el-popover内有select的时候在选择后会自动关闭89.说一下flex的属性90.vue3中404路由匹配规则91.shape-outside92.createRange表示文档中的一个范围——用于js判断文字添加省略号情况93.uniapp清除指定key缓存94.vue3+uniapp关于button的open-type无法生效95.uniapp+vue3 使用list触底+下拉96.diff算法vue97.动态修改manifest.json98.记录一下大小写导致的问题99.空合并 ?? 和 或 || 的核心区别100.「分包异步化」+「分包预下载」101.SliverPersistentHeader吸顶时,常见问题102.为什么现在我在我的页面,刷新后会出现刷新成功的message,这个不应该是在home里面吗103.loading加载中组件封装104.侧边栏主题切换高级动效实战(Vue2/Element UI 可复用版)105.Opacity 与 RGBA 的本质区别106.node_modules删除快得多的方案
107.vue路由守卫易错点
108.Win11 修改 hosts 后让 Chrome 立即生效的方法109.莱特摩比的一面之缘(前端经验)110.fatal: Not possible to fast-forward, aborting.路由守卫易错点
1. 把 beforeEnter 和 beforeRouteLeave 用反
beforeEnter是“进入某条路由前”的路由级守卫,适合鉴权、参数校验、重定向。beforeRouteLeave是“离开当前组件前”的组件级守卫,适合弹窗清理、未保存确认、资源释放。- 易错点:很多人用
beforeEnter做离开清理,结果离开时根本不触发。
2. 误以为 beforeRouteEnter 能直接拿 this
beforeRouteEnter执行时组件实例还没创建,所以没有this。- 正确用法是
next(vm => { ... })在实例创建后访问组件。 - 对比:
beforeRouteUpdate、beforeRouteLeave可以直接用this,因为组件已存在。
3. 误判触发时机:query/params 改变不一定会销毁组件
- 同一路由下只改
query(如?tabname=tuan)常常是复用组件,不会重新创建实例。 - 这时通常不会触发你期待的“进入新页面”逻辑,应该用:
watch($route)或watch(() => $route.query.xxx)beforeRouteUpdate
- 易错点:把初始化逻辑只写在
created,导致切 query 后不刷新数据。
4. 忽略守卫层级顺序导致判断重复或冲突
- 常见顺序理解:全局前置
beforeEach-> 路由独享beforeEnter-> 组件内beforeRouteEnter。 - 易错点:同一鉴权逻辑在三层都写,维护困难且可能互相覆盖重定向。
- 建议:全局管“通用规则”,路由独享管“页面特例”,组件守卫管“组件状态”。
5. 在守卫里忘记放行
- Vue Router 3 常见问题:调用了守卫却没
next(),页面卡死。 - Vue Router 4 则常见返回值写错(应返回
true/false/redirect)。 - 易错点:分支多时有漏掉的分支没放行。
6. 异步逻辑没处理好,造成闪跳或重复跳转
- 守卫里发请求要注意异常分支。
- 易错点:请求失败后既没中断也没降级,出现空白页或循环跳转。
- 建议:统一兜底,失败时给明确去向(登录页/错误页)。
7. 组件离开清理不彻底,导致“脏状态”回流
- 比如 Vuex 里的弹窗状态、筛选条件、临时编辑数据没清。
- 你的项目就是典型正确示例:团课页在
beforeRouteLeave里先关闭预约管理弹窗,再next(),避免切走后状态残留。
8. 误用 beforeEnter 处理组件内部 tab 行为
/schedule/index?tabname=tuan这种通常是同一路由容器内切换。beforeEnter只在进入该路由记录时触发,不是为组件内部 tab 切换设计的。- 这种场景应在组件里处理
query到状态映射,必要时配合beforeRouteUpdate或 watcher。
9. 把“权限控制”和“UI 展示控制”混在一起
- 权限控制应在守卫/路由层(是否允许进入)。
- UI 展示控制应在组件层(是否展示按钮、tab、操作项)。
- 易错点:只隐藏按钮不做路由校验,用户仍可直接输 URL 访问。
10. 不区分“路由守卫”与“生命周期钩子”
- 守卫解决“是否允许这次导航、导航前后做什么”。
- 生命周期解决“组件创建/更新/销毁时做什么”。
- 易错点:把导航问题放在
mounted里,导致先渲染后跳转,体验差。
实战记忆口诀
- 进页面拦截:
beforeEnter/beforeEach - 组件创建前:
beforeRouteEnter(无this,用next(vm=>...)) - 同组件路由变化:
beforeRouteUpdate - 离开组件收尾:
beforeRouteLeave
路由守卫最常见误区不是“不会写”,而是“写在了错误层级和错误时机”。
先判断你要解决的是“路由进入权限”“组件复用更新”还是“离开清理”,再选守卫,问题会少一大半。
__EOF__
