路由、拦截、最优雅解决方案 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页面过渡到nvuetabbar 页面时,启动页空白的Bug #334H5端,使用aliasPath页面作为启动页访问时,返回或再次进入页面会重新触发生命周期Bug (#316)
Add
- 新增
beforeProxyHooks选项,可提前享用页面生命周期。
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生tabbar页设置成启动页。你可以在beforeEach中使用 next 到tabbar页效果一致
2.0.7(2021-08-16)
Fixes bug
小程序端onLoad、onShow执行不标准的BUG。(#206,#224,#291)小程序端 启动页必须写onLoad才会执行的BUG。APP端 tab 拦截后无法自动还原选中区域现在已修复。- H5端设置
aliasPath后,无法使用aliasPath跨端跳转 (#302) - 重写代理生命周期逻辑、保证执行各端执行顺序 (#312)
Revise
- 参数可以直接传递
null。但是需要注意:在非深度对象传参的情况下,小程序会将null解析为字符串undefined - 多端情况下自定义启动参数不仅限制于
query传递深度参数,任何组合都可以 (#307,#301) - 去除
keyword白名单字段 - 调整小程序启动页面生命周期的执行,让在小程序下的生命周期能更贴近App、H5
routerErrorEach新增回调参数、包括:NAVTYPE、uniActualData、level
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原生tabbar页设置成启动页。你可以在beforeEach中使用 next 到tabbar页效果一致
2.0.6(2021-06-07)
Fixes bug
小程序端 因切页面动画原因导致路由锁提前解锁,可重复跳转bugH5端navigateBack无法使用successcomplete回调H5端tabbar切换时无法触发onTabItemTaphook
Add
app端navigateBack跳转锁有效app端 新增registerLoadingPage参数,用于控制是否注册加载页。如果关闭将不会执行loadingPageHookloadingPageStyle函数。默认开启小程序端 新增切页面时间animationDuration, 默认300ms。路由锁可捕捉到页面完全切换完成,设置为0则只捕捉跳转api下的complete函数。跨端可用*通配符 配合redirect错误页面捕捉
Revise
小程序端$Route在计算属性中可用。注意:在计算属性中获取的 query、fullPath 均不可取,它不是最终的数据。因为在计算属性中访问$Route时,其他参数均为注入。无法获取最终的参数,仅获取基本骨架参数name、path、aliasPath、meta
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-regexpexec 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端 使用navigateTo、push跳转时传递events无效 bug (#240)h5端next(false)后导致getCurrentPages获取的栈丢失,无法找到当前页面。导致二次无法执行 beforeRouteLeave (#241)
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在,请避免把原始tabbar页设置成启动页。可以在beforeEachnext 到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
backAPI 无法返回多层的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 还依然存在 bugAPP端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
2.0.0-beta.6(2020-12-29)
Fixes bug
- 小程序下带参数访问
enterPath没有正确提取路径 详细(#206 )
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bugAPP端 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 还依然存在 bugAPP端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
2.0.0-beta.4(2020-12-23)
Fixes bug
- 移除小程序端对
beforeCreate声明周期的拦截,天知道小程序端中uni-app在beforeCreate做了那些骚操作
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bugAPP端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
2.0.0-beta.3(2020-12-23)
Fixes bug
- 所有小程序端未声明
beforeCreate声明产生的query is undefinedbug 花了我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 还依然存在 bugAPP端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
2.0.0-alpha.5.1(2020-12-17)
Fixes bug
- 非
h5端 深度传参导致报错 (#196)
Add
- 新增保留字
['query'],解决开发者使用时和插件冲突的问题
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bugAPP端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
2.0.0-alpha.5(2020-12-09)
Fixes bug
H5端routerAfterEach、afterEach重复触发bugH5端 重复进入同一个页面时,onShow触发两次的bug- 非
H5端 传递中文未自动解码 (#192) - 优化
parseQuery调用多次
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bugAPP端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
2.0.0-alpha.4(2020-11-28)
Fixes bug
- 原生跳转返回 api 无法使用关闭动画的问题
APP端 路由构建参数animation可用- ios端跳转到第三方网址后返回应用不渲染组件(#109)
Add
- runtimeQuit 函数,可通过此函数退出app
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bugAPP端 tab 拦截后无法自动还原 选中区域,现需要开发者自行设置
2.0.0-alpha.3(2020-11-19)
Fixes bug
Known Issues
APP端启动页为tab时,拦截到其他页面后底部tabbar 还依然存在 bugAPP端 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。这意味着用户可随意放肆的传参!$Route及next管道函数同时新增NAVTYPE、fullPath。- 开启对
uni原生方法的拦截。这意味着使用uni原生方法和Router实例跳转能达到同样的效果,不仅如此....APP端nvue页面也可以使用路由拦截。不过需要注意的是nvue下 无法使用beforeRouteLeave生命钩子,启动页也不能使用nvue。 - 新的生命诞生保存,
routerBeforeEach、routerAfterEach、routerErrorEach、resolveQuery、parseQuery、detectBeforeLock。这标志着开发者能更自由的使用路由核心功能! - 等等 太多。。。。
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
- 调整以前使用
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 } - 新的挂载方式,传入
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
- 修复
H5端vueRouterDev: truehistory模式下刷新后会无限加query (#124)
add
- $parseQuery
getter用于处理参数类实例 - 新增
urlQuery.js快捷参数操作类 可以通过this.$Router.$parseQuery获取 - 路由
api跳转时,当跳转规则为字符串时,参数可以通过?连接 app端v3模式可拦截原生tabbar
revise
- 调整
H5端 参数传递和获取 app端plus.nativeObj.View默认显示调整到loddingPageHook生命周期函数下手动执行app端init.js移除createdHoldTab/uniRewritePublicFun重写rewriteUniFun函数app端uniNav.js移除pageNavFinish函数 并重写uniPushTo函数app端 默认配置移除rewriteFun/holdTabbarStyle调整holdTabbar/loddingPageHookhelpers/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
getter及setter - H5、小程序、APP 组件内
beforeRouteLeave路由守卫 - 加入 ts types 声明文件 (#68 )
- 添加多种初始化示例 【查看详细】
revise
- 去除
index.js下的_pushTo方法 - 去除
helpers/event.js index.js下抽离跳转方法 到navJump.js下- 所有 src 代码添加 eslint 验证
holdTabbar/rewriteFunAPP端下由 true 调整为 false
1.8.2(2020-04-06)
bugFix
revise
- H5端去除
Proxy实现低版本浏览器兼容 重要 - 去除 小程序下未导出的
callwaitHooks函数 (#94)
1.8.1(2020-02-29)
bugFix
revise
- 微信、百度、支付宝、头条、QQ小程序端重构
- 整理整体项目代码
1.8.0(2020-01-14)
bugFix
- 修复 APP 端首次进入首页生命钩子会触发两次的问题
- 修复 H5 端无法使用
onBackPress生命钩子
add
- H5 端
rewriteFun:true开关
1.7.9(2020-01-05)
bugFix
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
revise
- H5端 官方不友好表现 刷新页面后会返回首页的问题
1.6.71(2019-11-28)
bugFix
- 1.3.7遗留的bug,H5端打包后无法加载页面,一直处于加载状态。
1.6.7(2019-11-24)
修复
- 非5端router.back() 无效的问题
- 未配置beforeEach路由守卫时 H5端 跳转body 的样式不更改的问题
- 正则匹配 pages.json 有rgb时会死循环报错
新增
- H5端提供paramsToQuery:true配置 params传参时可变成带?连接
调整及优化
- H5端所有跳转规则内部统一为对象跳转
- 配置aliasPath后 跳转路径依旧是path、H5可以通过两者跳转
1.6.6(2019-11-14)
修复 H5 端 id 报错的问题 (#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
- 新增app.vue中跳转及其他组件跳转标识符
- 新增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)
首次提交