提高小程序开发效率:全面解析加密路由文件和5种路由方式
5种路由方式和小程序的使用场景,加密路由文件和路由方式,提高小程序体验和开发效率
帮助解决问题
- 每次使用路由时,总是粘贴并复制路由。这样当路径改变时,就必须把所有使用该路径的地方都改变,导致维护成本很高。
- 路由跳转时的拼接参数混乱,业务复杂。如果需要连接十几个参数
- 路由返回,只返回一层,并不能直接返回目标页面,因为不知道目标页面是否在路由栈中,而你也不知道它是哪一层
这些问题都可以通过封装路由文件和路由方法来解决,提高了开发效率,减少了BUG,节省了更多的时间陪伴女朋友
封装路由文件,统一管理路由
根目录下创建router.js
// 这是路由管理页面,在此统一配置路由
export default {
'index':'/index/index', // 首页
'list':'/list/list', // list页面
'top':'/top/top', // top页面
}
复制代码
解决第一个问题
封装路由方法
常用的就是这三个,还有三个switchTab
、 navigatorTo
、n avigateBack
,Spring TabBar页面专用,其他页面从堆栈中弹出,新页面入栈
navigateTo
添加了最常用的路由跳转。 navigateBack
返回只能返回到页面栈中存在的页面。不断从堆栈中拉出页面,直到到达目标页面。 redirectTo
关闭当前页面,跳转到某个页面,当前页面不会添加到页面栈中,也就是说返回无法到达当前页面,比如支付页面。支付完成后,最好不要让用户返回支付页面,比如删除商品等一些无法更改的操作。删除产品后,通过navigateBack
返回并再次删除产品。体验肯定不会好,因为当前页面会从堆栈中弹出,新页面会被压入堆栈重新启动
关闭所有页面并打开特定页面。您可以打开任何页面,包括 TabBar。适用于强制完成某项操作的页面,例如登录页面。如果已登录的用户点击退出并进入登录页面,则无法通过。这个适合用这个,显示所有页面都从栈中弹出,新的页面入栈开始封装,在根目录下创建utils.js
// 封装路由方法
export default {
/**
* function
* @param {string} url 目标页面的路由
* @param {Object} param 传递给目标页面的参数
* @description 处理目标页面的参数,转成json字符串传递给param字段,在目标页面通过JSON.parse(options.param)接收
*/
navigateTo(url,param={}){
if(param){
url+=`?param=${JSON.stringify(param)}`
}
wx.navigateTo({
url:url,
fail(err) {
console.log('navigateTo跳转出错',err)
},
})
},
/**
* function
* @param {string} url 目标页面的路由
* @param {Object} param 传递给目标页面的参数,只有页面栈无目标页面调用navigateTo时,参数才会生效,单单返回不能设置参数
* @description 先取出页面栈,页面栈最多十层,判断目标页面是否在页面栈中,如果在,则通过目标页的位置,返回到目标页面,否则调用navigateTo方法跳转到目标页
*/
navigateBack(url,param={}){
const pagesList = getCurrentPages()
let index = pagesList.findIndex(e=>{
return url.indexOf(e.route)>=0
})
if(index == -1){ // 没有在页面栈中,可以调用navigateTo方法
this.navigateTo(url,param)
}else{
wx.navigateBack({
delta: pagesList.length-1-index,
fail(err){
console.log('navigateBack返回出错',err)
}
})
}
},
switchTab(url){ // 封装switchTab,switchTab不能有参数
wx.switchTab({
url:url
})
},
redirectTo(url,param={}){ // 封装redirectTo,和navigateTo没啥区别
if(param){
url+=`?param=${JSON.stringify(param)}`
}
wx.redirectTo({
url:url,
fail(err) {
console.log('redirectTo跳转出错',err)
},
})
},
reLaunch(url,param={}){ // 封装reLaunch,和navigateTo没啥区别
if(param){
url+=`?param=${JSON.stringify(param)}`要根据具体业务来,该返回就返回,该跳转就用跳转,不能一直跳转!
}
wx.reLaunch({
url:url,
fail(err) {
console.log('reLaunch跳转出错',err)
},
})
}
}
复制代码
上面的参数封装的方案。具体的。选择合适的路由跳转方式会提高用户体验,而封装主要是为了提高开发效率,降低后期维护成本
作者:前端李辉旺
链接:https://juejin.im/post /5ce920cf6fb9a07f091b7eae
来源:Dig Kim
版权归作者所有。如需商业转载,请联系求作者授权。非商业转载请来源。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。