发布日期:2026-09-11
unix-router v0.3.0 发布!本次升级完成 插件体系(PluginContext)完善,新增 params 持久化(跨刷新/重进保留),并修复两项与内部 key 相关的健壮性问题。
核心更新
新增:paramsPersistent — params 持久化
配合 ParamsPlugin,新增 RouterOptions.paramsPersistent 配置(默认 false)。开启后,页面参数默认写入 storage,跨刷新 / 重新进入仍能取回,不再局限于内存(刷新即失效)。
import { createRouter, ParamsPlugin } from '@meng-xi/unix-router'
// 开启 params 默认持久化
const router = createRouter({
routes,
plugins: [ParamsPlugin],
paramsPersistent: true
})
// params 经 __params__ 内部通道传递,刷新/返回后仍可读取
await router.push({ name: 'detail', params: new Map([['id', '1024']]) })
新增:插件体系(PluginContext)完善
PluginContext 现提供完整导航 hook,支持编写自定义插件:
- 七大导航 hook:
onEnrichLocation/onAfterResolve/onPrepareNavigation/onCompleteNavigation/onNavigationAbort/onRouteSync/onAppInstall - 上下文成员
router/paramsManager/hasPlugin
const AnalyticsPlugin: RouterPlugin = {
name: 'analytics',
install(context: PluginContext) {
context.onAfterResolve((location, pluginData) => {
pluginData.set('ts', Date.now())
})
context.onCompleteNavigation(ctx => {
report(ctx.to.path, ctx.pluginData.get('ts'))
})
}
}
补齐:guardRoute / onRouteChange
Router.guardRoute():冷启动(直接 URL 进入)时补跑守卫链,避免 deep link 绕过权限Router.onRouteChange():监听完整导航与状态同步两类路由变化
修复
- 内部 key 不泄漏:导航成功后写入
currentRoute前剔除__params__内部 key(stripInternalKeys),避免暴露给用户 - params 空值崩溃:
ParamsPlugin的afterResolve对Map.get未命中时的null返回值做防护,修复其可能中断导航链路的崩溃
安装方式
- uni_modules(推荐):
import { createRouter, ParamsPlugin, InterceptorPlugin } from '@/uni_modules/ux-router/utssdk/index.uts' - npm:
pnpm add @meng-xi/unix-router(packages/core为 UTS 源分发)
文档
从入门到精通的完整文档(🟢 入门 → 🟡 进阶 → 🔴 精通)位于 packages/docs,已新增插件系统教程(plugins、getting-started、navigation),中英文同步。
平台兼容性
- Web / H5、微信小程序 → 编译为 JS
- App-Android → 编译为 Kotlin / JS
- iOS(VDOM)→ 编译为 Swift
- 底层仅依赖
uni.*原生导航 API,双模式兼容 uni-app x