路由、拦截、最优雅解决方案 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 #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
无法使用success
complete
回调H5
端tabbar
切换时无法触发onTabItemTap
hook
Add
app
端navigateBack
跳转锁有效app
端 新增registerLoadingPage
参数,用于控制是否注册加载页。如果关闭将不会执行loadingPageHook
loadingPageStyle
函数。默认开启
小程序
端 新增切页面时间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-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
端 使用navigateTo
、push
跳转时传递events
无效 bug (#240)h5
端next(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 还依然存在 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 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 还依然存在 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: true
history
模式下刷新后会无限加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/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
getter
及setter
- 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
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)
首次提交