unix-router v0.3.0 发布:params 持久化+插件体系升级

30 阅读2分钟

发布日期: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 空值崩溃ParamsPluginafterResolveMap.get 未命中时的 null 返回值做防护,修复其可能中断导航链路的崩溃

安装方式

  • uni_modules(推荐)import { createRouter, ParamsPlugin, InterceptorPlugin } from '@/uni_modules/ux-router/utssdk/index.uts'
  • npmpnpm add @meng-xi/unix-routerpackages/core 为 UTS 源分发)

文档

入门到精通的完整文档(🟢 入门 → 🟡 进阶 → 🔴 精通)位于 packages/docs,已新增插件系统教程(pluginsgetting-startednavigation),中英文同步。

平台兼容性

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

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