uni-router v0.2.0重磅发布:全链路拦截+重复导航优化

发布日期:2026-09-09

unix-router v0.2.0 发布!本次升级带来两项关键改进:uni API 拦截(opt-in) 让守卫从「仅库内生效」下沉到 uni API 层,以及重复导航判定优化。

核心更新

新增:uni API 拦截(opt-in)

新增 RouterOptions.interceptUniApi 配置(默认关闭)。启用后,绕过路由器、直接调用 uni.navigateTo / redirectTo / switchTab / reLaunch / navigateBack 的跳转也会被拦截并转入守卫链,守卫对全量导航生效。

设计要点(借鉴 uni-router 的 interceptor 插件并适配 uni-app x):

  • 调用去重:以计数器区分「路由器内部发起」与「外部调用」,避免守卫被二次执行
  • 阻止 + 转发 :外部调用解析 uni URL → 转 router.* 走完整守卫链 → 阻止原始调用
  • H5 switchTab 特判 :阻止 uni.switchTab 会导致 H5 TabBar 组件状态卡死,故放行原调用并在成功回调中同步路由状态
  • 平台版本门槛:需 Web 4.0 / 微信 4.41 / Android 3.97 / iOS 4.11 / HarmonyOS 4.61 及以上运行时
typescript 复制代码
// 开启后,业务中直接调用 uni.navigateTo('/pages/xxx') 同样会触发守卫链
const router = createRouter({ routes, interceptUniApi: true })

注意:微信小程序端 <navigator> 组件跳转与点击 tabBar(底层不触发 uni.switchTab)无法被拦截,此场景需在页面 onShow 兜底守卫。

修复:重复导航判定优化

重复导航判定从「path + query」扩展为 path + query + params + hash 全部一致才判 DUPLICATED 。此前携带不同 params 重入当前页会被误判为重复导航并报错,现已允许以新参数重入当前页刷新数据,同时仍能拦截真正无意义的重复 push。

安装方式

  • uni_modules(推荐) :import { createRouter } from '@/uni_modules/ux-router/utssdk/index.uts'
  • npm :pnpm add @meng-xi/unix-router(packages/core 为 UTS 源分发)

文档

从入门到精通 的完整文档(🟢 入门 → 🟡 进阶 → 🔴 精通)位于 packages/docs,RouterOptions 已同步 interceptUniApi 字段与平台兼容说明(中文 / 英文)。

平台兼容性

  • Web / H5、微信小程序 → 编译为 JS
  • App-Android → 编译为 Kotlin / JS
  • iOS(VDOM)→ 编译为 Swift
  • 底层仅依赖 uni.* 原生导航 API,双模式兼容 uni-app x

欢迎 Star 与反馈:GitHub · 更新日志

相关推荐
曹牧7 小时前
C#:空合并运算符
java·前端·数据库
小羊没烦恼!8 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
智能直播11 小时前
RK3518:1.5G 内存 + 8G 存储,如何跑起硬件编解码、Web、AI 识别、绿幕特效
前端·人工智能·5g
掘金酱12 小时前
【10.24 特别活动】AI 时代,程序员的新饭碗在哪里?
前端·人工智能·后端
excel12 小时前
多进程环境下使用 PM2 部署 Socket.IO:需要注意什么
前端
IT_陈寒12 小时前
Redis的原子性竟然失效了?记一次分布式锁翻车实录
前端·人工智能·后端
2501_9159214313 小时前
iOS应用耗电测试:使用Energy Log、Keymob和Instruments进行性能监控与能源消耗分析
android·ios·小程序·https·uni-app·iphone·webview
时间的情敌14 小时前
《回顾 2018 前端:Vue2 成熟期,Webpack4 发布,PWA 大火》
前端
Java后端的Ai之路14 小时前
前端技术Vue-09-webpack-vuejs-实战
前端·vue.js·webpack
LMT流氓兔14 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain