加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

微信小程序 封装路由 mini-router

发布时间:2020-12-14 19:19:50 所属栏目:资源 来源:网络整理
导读:1.介绍 mini-router 是一个在微信小程序中使用的路由模块,主要用于在小程序中的路由模块化和解耦,解决小程序中的路由地址的硬编码。? Github:?https://github.com/hellolad/mini-router 原生路由: // 用法:1 wx . navigateTo ({ url : "/pages/logs/logs

1.介绍

mini-router 是一个在微信小程序中使用的路由模块,主要用于在小程序中的路由模块化和解耦,解决小程序中的路由地址的硬编码。?
Github:?https://github.com/hellolad/mini-router

原生路由:

  1. // 用法:1
  2. wx.navigateTo({
  3. url: "/pages/logs/logs"
  4. })
  5. // 用法:2
  6. ({
  7. "/pages/logs/logs",
  8. success(res) {
  9. consolelog("success" res
  10. },
  11. failerr{
  12. "fail" err)
  13. complete(){
  14. "complete")
  15. }
  16. })
  17. // 用法:3(传参)
  18. ({
  19. "/pages/logs/logs?key=value"})

mini-router

app$routerpush"logs")
  • // 用法:2
  • "mine")
  • successres =>{
  • "success: ")
  • failerr "fail: ")
  • })
  • complete_ // 用法:3 (传参)
  • { key value

    2.使用方法

    // 第一步:导入router模块,并且在app.js里 给app设置一个属性$router
  • // app.js
  • import MiniRouter from'./route/router'
  • onLaunchfunction{
  • this$router =newMiniRouter()
  • // 第二步:配置route文件夹中的pages模块 (url 直接复制app.json里的pages)
  • exportdefault[
  • {
  • url'pages/index/index' name'index'
  • 'pages/article/article''article'
  • {
  • 'pages/mine/mine''mine'
  • 'pages/logs/logs''logs'
  • 'pages/login/login''login'
  • 'pages/next/next''next'
  • }
  • ]
  • // 第三步:在需要的文件里 使用
  • )
  • 3.支持的方法

    目前mini-router支持微信小程序里的路由的所有方法,函数名对比:

    4.函数介绍

    push(name,params = null)?
    保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面

    reLaunch(name,params = null)?
    关闭所有页面,打开到应用内的某个页面 可传递参数 可跳转到Tabbar页面

    redirect(name,params = null)?
    关闭所有页面,打开到应用内的某个页面 可传递参数 不可重定向到Tabbar页面

    switchTab(name)?
    跳转到指定的Tab

    back(delta = 1,params = null)?
    关闭当前页面,返回上一页面或多级页面。 没有参数 代表返回上一页

    backHome(params = null)?
    关闭所有页面返回到首页

    5.错误处理

    当你输入一个在pages模块中找不到的路由时(log),mini-router会抛出错误,例如:

    "log" log"这是一个Log"
    
  • // 打印
  • /*
  • !! Not found page ->:[log] !!; [Component] Event Handler Error @ pages/index/index#bound handlePushLogs
  • */
  • 6.获取传递的参数

    mini-router内置了一个属性params,它会根据你跳转的页面,动态的更换当前属性的值。

    // 当我传递了一个参数 { log: "这是一个Log" }
    
  • })
  • // 然后我在下一个界面的onShow/onLoad里接收
  • constparams app.params
  • paramslog // 这是一个Log
  • 参数存储在storage里,你可以通过小程序调试工具看到:

    mini-router params

    获取参数时,你不必知道它存储在storage里的key是什么,你只要拿app.$router.params就可以了

    7.反向传值

    mini-router 通过back或者backHome函数实现反向传值(反向携带参数)

    back(1 isLoginfalse// 中间页传值给最后一页,最后一页携带值给首页
    
  • data }params
  • backHome({})
  • 当你选择不携带参数返回时,在首页你将拿不到app.$router.params,因为mini-router会把params软删除,如果你需要的话,你还是可以从storage里拿到它。

    8.状态处理

    mini-router同小程序一样,提供三种状态success, fail, complete?
    不同于小程序,mini-router使用链式调用来处理这三种状态,

    )
    
  • })
  • )
  • 9.query方式传参

    上面的都是通过params传参,传的参数缓存在了storage里,新增加的query类型传参,将参数拼接到了url后面:

    /**
  • * Query 方式传递参数
  • */
  • handlePushLogsQuery app"这是一个Log" name"hellolad"'query'handlePushLoginQuery$router
  • "login" phoneNumber"1561900000000"{
  • console})
  • handleReLaunchArticleQueryreLaunch"article" articleId'10002'})
  • handleRedirectLoginQuery{
  • redirect'1561900000000')
  • // 获取参数和普通的params传参获取参数一样:
  • phoneNumber params
  • // 也可以在onLoad(options)里获取
  • console"login options" options// 生成的url类似:
  • /pageslogin?phoneNumber=1561900000000
  • 寄语:对于前端来说,可以说初窥门径,想要更深入一步,还是要坚持不断的学习和看源码。mini-router可以实现小程序里路由的跳转,也将成为我下一个小程序使用的路由模块,如果有不足的地方欢迎题issuse,如果有好的想法,欢迎pull request。

    Github:?https://github.com/hellolad/mini-router


    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读