路由、拦截、最优雅解决方案 uni-simple-router - 更新日志

2.0.8-beta.4(2022-04-03)

Fixes bug

  • APP 端 普通nvue页面跳nvueTab页面白屏 #373

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生 tabbar 页设置成启动页。你可以在 beforeEach 中使用 next 到tabbar页效果一致

2.0.8-beta.2(2021-12-13)

Fixes bug

  • 组件式导航解析字符串错误Bug #227
  • APP 端使用 vue 页面过渡到 nvue tabbar 页面时,启动页空白的Bug #334
  • H5 端,使用 aliasPath 页面作为启动页访问时,返回或再次进入页面会重新触发生命周期Bug (#316)

Add

  • 新增 beforeProxyHooks 选项,可提前享用页面生命周期。

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生 tabbar 页设置成启动页。你可以在 beforeEach 中使用 next 到tabbar页效果一致

2.0.7(2021-08-16)

Fixes bug

  • 小程序onLoadonShow 执行不标准的BUG。(#206,#224,#291)
  • 小程序 端 启动页必须写 onLoad 才会执行的BUG。
  • APP 端 tab 拦截后无法自动还原选中区域现在已修复。
  • H5端设置 aliasPath 后,无法使用 aliasPath 跨端跳转 (#302)
  • 重写代理生命周期逻辑、保证执行各端执行顺序 (#312)

Revise

  • 参数可以直接传递 null。但是需要注意:在非深度对象传参的情况下,小程序会将 null 解析为字符串undefined
  • 多端情况下自定义启动参数不仅限制于 query 传递深度参数,任何组合都可以 (#307,#301)
  • 去除 keyword 白名单字段
  • 调整小程序启动页面生命周期的执行,让在小程序下的生命周期能更贴近App、H5
  • routerErrorEach 新增回调参数、包括:NAVTYPEuniActualDatalevel

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生 tabbar 页设置成启动页。你可以在 beforeEach 中使用 next 到tabbar页效果一致

2.0.6(2021-06-07)

Fixes bug

  • 小程序 端 因切页面动画原因导致路由锁提前解锁,可重复跳转bug
  • H5navigateBack 无法使用 success complete 回调
  • H5tabbar 切换时无法触发 onTabItemTap hook

Add

  • appnavigateBack 跳转锁有效
  • app 端 新增 registerLoadingPage 参数,用于控制是否注册加载页。如果关闭将不会执行 loadingPageHook loadingPageStyle 函数。默认开启
  • 小程序 端 新增切页面时间 animationDuration, 默认 300ms。路由锁可捕捉到页面完全切换完成,设置为 0 则只捕捉跳转 api下的complete 函数。
  • 跨端 可用 * 通配符 配合 redirect 错误页面捕捉

Revise

  • 小程序$Route 在计算属性中可用。注意:在计算属性中获取的 query、fullPath 均不可取,它不是最终的数据。因为在计算属性中访问 $Route 时,其他参数均为注入。无法获取最终的参数,仅获取基本骨架参数 namepathaliasPathmeta

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生 tabbar 页设置成启动页。你可以在 beforeEach 中使用 next 到tabbar页效果一致
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置。

2.0.5(2021-05-05)

Fixes bug

  • npm 发布时附带本地开发依赖导致和脚手架项目冲突 (#260 )
  • onBackPress 事件无法正常捕捉返回类型 (#263 )

Revise

  • $Route 路由元下新增 BACKTYPE 标识。 APP 返回时会在守卫 to 参数下标明。其他端及非返回状态下都为字符串

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生 tabbar 页设置成启动页。你可以在 beforeEach 中使用 next 到tabbar页效果一致
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置。

2.0.4(2021-04-25)

Fixes bug

  • path-to-regexp exec Invalid dynamic path

Add

  • jest 单元测试

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生 tabbar 页设置成启动页。你可以在 beforeEach 中使用 next 到tabbar页效果一致
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置。

2.0.2(2021-04-15)

Fixes bug

  • 百度小程序高基础库版本,初始化获取不到 enterPath (#251 )
  • uni-app 原生方法跳转时 path-to-regexp 无法匹配带参数的路径 (#252 )
  • app端app.vue 生命周期下获取 $Route 报错 (#254 )
  • 小程序端 首次路由拦截到其他页面时,app.vue 无法获取正确的路由信息

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生 tabbar 页设置成启动页。你可以在 beforeEach 中使用 next 到tabbar页效果一致
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置。

2.0.1(2021-03-27)

Fixes bug

  • H5端 vueRouterDev:true 完全模式下,每次跳转都会 reload

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生 tabbar 页设置成启动页。你可以在 beforeEach 中使用 next 到tabbar页效果一致
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置。

2.0.0(2021-03-07)

Fixes bug

  • app 端 在 page.json 中设置 animation无效 bug (#238)
  • h5 端 使用 navigateTopush 跳转时传递 events 无效 bug (#240)
  • h5next(false) 后导致 getCurrentPages 获取的栈丢失,无法找到当前页面。导致二次无法执行 beforeRouteLeave (#241)

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原始 tabbar 页设置成启动页。可以在 beforeEach next 到tabbar页效果一致
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置。

2.0.0-beta.11(2021-02-07)

Fixes bug

  • h5 端 路由守卫下执行 next(false) 路由栈被清空的bug

Revise

  • 原生跳转时相对路径不在同目录下支持

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug。
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置。

2.0.0-beta.9(2021-02-06)

Fixes bug

  • back API 无法返回多层的bug

Add

  • 路由守卫下执行 NAVTYPE :back 可用

Revise

  • routerErrorEach 默认添加 router.$lockStatus = false; 解锁。

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug。
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置。

2.0.0-beta.8(2021-01-07)

Fixes bug

  • 再次修复 【#109

2.0.0-beta.7(2021-01-01)

Add

  • router-link 组件

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置

2.0.0-beta.6(2020-12-29)

Fixes bug

  • 小程序下带参数访问 enterPath 没有正确提取路径 详细(#206 )

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置

2.0.0-beta.5(2020-12-25)

Fixes bug

  • resolveAbsolutePath 正则分组2出现 undefined 的情况

Add

  • uni-simple-router.d.ts 加入 declare module 'vue/types/vue'

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置

2.0.0-beta.4(2020-12-23)

Fixes bug

  • 移除小程序端对 beforeCreate 声明周期的拦截,天知道小程序端中 uni-appbeforeCreate 做了那些骚操作

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置

2.0.0-beta.3(2020-12-23)

Fixes bug

  • 所有小程序端未声明 beforeCreate 声明产生的 query is undefined bug 花了我2个小时排除

2.0.0-beta.2(2020-12-22)

请各位已经下载了 2.0.0-beta.1 的朋友下载 下一个版本或上一个版本~

2.0.0-beta.1(2020-12-22)

Fixes bug

  • 所有小程序端 首次进入生命周期重复触发

Revise

  • 原生跳转时如果原本使用为相对路径由警告变为可用

Add

  • 所有小程序端所有生命周期均可劫持 perfect

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置

2.0.0-alpha.5.1(2020-12-17)

Fixes bug

  • h5 端 深度传参导致报错 (#196)

Add

  • 新增保留字 ['query'],解决开发者使用时和插件冲突的问题

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置

2.0.0-alpha.5(2020-12-09)

Fixes bug

  • H5routerAfterEachafterEach 重复触发bug
  • H5 端 重复进入同一个页面时,onShow 触发两次的bug
  • H5 端 传递中文未自动解码 (#192)
  • 优化 parseQuery 调用多次

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置

2.0.0-alpha.4(2020-11-28)

Fixes bug

  • 原生跳转返回 api 无法使用关闭动画的问题
  • APP 端 路由构建参数 animation 可用
  • ios端跳转到第三方网址后返回应用不渲染组件(#109

Add

  • runtimeQuit 函数,可通过此函数退出app

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置

2.0.0-alpha.3(2020-11-19)

Fixes bug

  • H5 端去除加锁限制 (#181
  • H5 端首次启动有拦截时,需要手动刷新才会出现页面 (#185
  • 原生跳转api重写失败的问题 (#183

Known Issues

  • APP 端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bug
  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
  • APP 端 路由构建参数 animation 目前是无效的,可以在跳转方法中设置

2.0.0-alpha.2(2020-11-11)

2.0.0-alpha.1(2020-11-04)

Breaking Changes

  • JavaScript,调整为安全使用 typescript:4.0.3 重构。新版完全靠近 【vue-router-next
  • 新增了部分用处较大的 API,同时也阉割掉了部分用处较少的API 。【详细见
  • URL传参得到了很好的解决,由手动选择encodeURI模式调整为auto。这意味着用户可随意放肆的传参!
  • $Routenext 管道函数同时新增 NAVTYPEfullPath
  • 开启对 uni 原生方法的拦截。这意味着使用 uni 原生方法和 Router 实例跳转能达到同样的效果,不仅如此.... APPnvue 页面也可以使用路由拦截。不过需要注意的是 nvue 下 无法使用 beforeRouteLeave 生命钩子,启动页也不能使用 nvue
  • 新的生命诞生保存,routerBeforeEachrouterAfterEachrouterErrorEachresolveQueryparseQuerydetectBeforeLock。这标志着开发者能更自由的使用路由核心功能!
  • 等等 太多。。。。

Fixes and Features

  • h5 ios 端 外部链接跳转回来白屏问题 #109
  • beforeRouteLeave 方法调用一次之后,不再二次触发的问题 #171
  • 小程序端参数带有特殊字符被编码后没解码回来 #172
  • h5 非首页进入后 再次打开这个页面会二次执行生命周期 #177
  • h5 端 vueRouterDev:false 情况下 vue-router 全部功能可用
  • 等等 太多。。。。

Known Issues

  • APP 端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
  • APP 端 路由构建参数 animation 目前是无效的,可以在跳转方法中设置

Add

太多啦,不写啦!后面文档说。。。。

Migrating a v1.x project

  1. 调整以前使用new关键字到Function 构造
    //  router/index.js
    import Vue from 'vue'
    import {RouterMount,createRouter} from 'uni-simple-router'
    const router = createRouter({
     platform: process.env.VUE_APP_PLATFORM,
     routes: [...modules]
    })
    router.beforeEach((to, from, next) => {
    next()
    })
    router.afterEach((to, from) => {
    })
    Vue.use(router);
    export {
    router,
    RouterMount
    }
  2. 新的挂载方式,传入 router 示例挂载。
    
    //main.js
    import Vue from 'vue'
    import App from './App'
    import {router,RouterMount} from './router'
    App.mpType = 'app'
    const app = new Vue({
    ...App
    })
    // #ifdef H5
    RouterMount(app,router,'#app')
    // #endif

// #ifndef H5 app.$mount(); //为了兼容小程序及app端必须这样写才有效果 // #endif

1.8.41(2020-06-28)

revise

  • 向前靠齐

1.8.4(2020-06-02)

bugFix

  • 修复 H5vueRouterDev: true history 模式下刷新后会无限加query (#124

add

  • $parseQuery getter 用于处理参数类实例
  • 新增 urlQuery.js 快捷参数操作类 可以通过 this.$Router.$parseQuery 获取
  • 路由 api 跳转时,当跳转规则为字符串时,参数可以通过 ? 连接
  • appv3 模式可拦截原生tabbar

revise

  • 调整 H5 端 参数传递和获取
  • appplus.nativeObj.View 默认显示调整到 loddingPageHook 生命周期函数下手动执行
  • appinit.js 移除 createdHoldTab/uniRewritePublicFun 重写 rewriteUniFun 函数
  • appuniNav.js 移除 pageNavFinish 函数 并重写 uniPushTo 函数
  • app 端 默认配置移除 rewriteFun/holdTabbarStyle 调整 holdTabbar/loddingPageHook
  • helpers/util.js 移除 queryMp/normalizeParams/strObjToJsonToStr/timeout 函数
  • helpers/applets-patch.js 移除 queryInfo 函数

1.8.3(2020-05-07)

bugFix

  • 修复头条小程序下首次进入小程序时首页生命周期不触发的问题
  • 修复 组件式 导航无法动态传参 (#116

add

  • 小程序端调用 $Router.back() 触发全局守卫 (#113
  • 全局 navLock 跳转时加锁、防止快速点击多开页面
  • $lockStatus gettersetter
  • H5、小程序、APP 组件内 beforeRouteLeave 路由守卫
  • 加入 ts types 声明文件 (#68
  • 添加多种初始化示例 【查看详细

revise

  • 去除 index.js 下的 _pushTo 方法
  • 去除 helpers/event.js
  • index.js 下抽离跳转方法 到 navJump.js
  • 所有 src 代码添加 eslint 验证
  • holdTabbar/rewriteFun APP端下由 true 调整为 false

1.8.2(2020-04-06)

bugFix

  • APP端 V3模式下 encodeURI:true 获取参数报错问题 (#101
  • APP端 V3模式下 取消头部或自定义头部下会触发 onBackPress 导致多次返回的问题 (#106

revise

  • H5端去除 Proxy 实现低版本浏览器兼容 重要
  • 去除 小程序下未导出的 callwaitHooks 函数 (#94

1.8.1(2020-02-29)

bugFix

  • nvue页面无法跳转进去的问题 (#84
  • 打包后微信小程序 pushTab 失效问题 (#70

revise

  • 微信、百度、支付宝、头条、QQ小程序端重构
  • 整理整体项目代码

1.8.0(2020-01-14)

bugFix

  • 修复 APP 端首次进入首页生命钩子会触发两次的问题
  • 修复 H5 端无法使用 onBackPress 生命钩子

add

  • H5 端 rewriteFun:true 开关

1.7.9(2020-01-05)

bugFix

  • 修复在H5端上首页刷新时,存在beforeEnter会触发两次的bug (#67 )
  • 修复在APP端上 this.$Router.back 只能返回一层的bug (#66)

1.7.8(2019-12-31)

bugFix

  • 修复H5端 next 管道函数 传入false 无法拦截的问题
  • 修复H5端 next 管道函数 重定向时没有正常解析生命周期的问题
  • 修复H5端 在微信浏览器中直接打开某个子页面 点击顶部返回无效的问题
  • 修复H5端 history 模式下 首次打开错误页面不执行 path:* 匹配项
  • 修复H5端 脚手架项目读取页面配置错误的问题
  • 修复APP端 多次跳转拦截异常

add

  • 实例 getter $Route 用于获取当前页面的Route信息
  • app端 getter $holdTab 用于获取底部拦截tabbar的实例对象

revise

  • Router实例下的 getQuery 方法 改名为 getter $Route
  • app端逻辑重写、新增动画、底部拦截、返回拦截 查阅更多文档

1.6.81(2019-12-01)

bugFix

  • 修复在H5端上生命周期异常的bug (#49 )
  • 修复 history 模式下 微信公众号中 子页面返回 tabbar 首页 自动刷新的bug (#46)

revise

  • H5端 官方不友好表现 刷新页面后会返回首页的问题

1.6.71(2019-11-28)

bugFix

  • 1.3.7遗留的bug,H5端打包后无法加载页面,一直处于加载状态。

1.6.7(2019-11-24)

修复

  1. 非5端router.back() 无效的问题
  2. 未配置beforeEach路由守卫时 H5端 跳转body 的样式不更改的问题
  3. 正则匹配 pages.json 有rgb时会死循环报错

新增

  1. H5端提供paramsToQuery:true配置 params传参时可变成带?连接

调整及优化

  1. H5端所有跳转规则内部统一为对象跳转
  2. 配置aliasPath后 跳转路径依旧是path、H5可以通过两者跳转

1.6.6(2019-11-14)

修复 H5id 报错的问题 (#38)

1.6.5(2019-11-10)

1 修复 真机上出现 ' query' of undefined 的问题 (#26) 1 新增 H5 加载样式、DOM、JS、可自行配置 1 新增 H5 自定义URL,可通过 aliasPath 来重写掉 uni-app 自带的路由路径 1 新增 H5 动态导入组件作为页面 1 新增 H5 完全拦截 `uni-app 自带的所有跳转 1 新增 H5 自定义路由表。通配、404、子路由。嵌套路由 废弃pages.json中的配置 1 新增 H5 提供3中开发模式:1.读取pages.json中的配置开发,2.不使用pages.json中的配置进行开发,开发者直接用component动态导入组件。3.完全使用vue-router开发 1 新增 提供两种传参模式:可编码、可不编码 1 新增 routerBeforeEach、routerAfterEach、路由全局生命周期 1 新增 开发者模式 debugger:true 可打印日志

1.5.5(2019-09-10)

1.新增参数传递时使用 decodeURIComponent 及 encodeURIComponent 解密加密的方式
2.修复 webView返回路由页面,next失效 (#18

1.5.4(2019-09-01)

1.修复 url会自动添加: query=%7B%7D (#15
2.修复 APP路由跳转导航钩子被重复调用 (#16)
3.修复 APP.vue中跳转路由报错 (77856

1.5.3(2019-08-27)

H5端 调用 uni.previewImage 后实例获取错误的bug

1.5.2(2019-08-22)

1.改进深度对象的传递方式 2.H5新增路由加载进度条 3.修复tab切换及H5端通过连接进入无法触发钩子的问题 4.新增router-link组件式路由

1.4.2(2019-08-09)

修复测试在百度小程序上无法跳转的bug

1.4.1(2019-08-08)

修复 H5端页面刷新后无法调用back API的bug

1.4.0(2019-07-31)

1.新增首次触发生命钩子 2.修复app.vue中无法跳转的bug

  1. 新增app.vue中跳转及其他组件跳转标识符
  2. 新增next()函数自由自定拦截类型

1.3.0(2019-07-30)

修复路由传参时深度对象无法传递的bug

1.2.0(2019-07-18)

修复1.1.0版本中遗留的bug,嵌套组件无法跳转的bug

1.1.0(2019-07-17)

修复在嵌套组件中无法访问$Route的bug

1.0.0(2019-07-14)

首次提交