- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微信小程序页面路由原理
摘要:小程序的开发方兴未艾,本文以图解的形式详细剖析了小程序开发中的页面栈及页面路由原理,对于该原理的深入理解有助于开发者更好地理解小程序的开发框架,更好地开发出功能强大的小程序。
关键词:小程序;miniprogram;页面栈;路由
中图分类号:tp3文献标识码:a
文章编号:1009-3044(2019)28-0054-02
微信小程序(以下简称小程序)也叫miniprogram,是腾讯公司在2017年推出的一种不需要下载安装即可使用的轻应用,小程序基于用户量超10亿的微信平台,以其无须下载和卸载、随时可用、无处不在等简洁特点,一经推出便引起轰动,短短一两年时间便呈现出爆发增长的态势,越来越多的用户接受并使用小程序,越来越多的开发者加入小程序的开发之中。
小程序的开发基于web技术,与传统的web开发(如网页)有很多相似之处,因此有web开发经验的开发者可以很容易地掌握小程序开发技术。但小程序作为轻应用的本质,决定了其短小精干、功能受限等有别于传统web开发的特点,这些技术特点又导致了在跨进小程序开发的门槛时,传统web开发者的很多技术经验往往成为理解障碍而非助力,这其中最为典型的一个核心概念便是小程序的页面路由。
众所周知,传统web开发基于html+css编写的web页面,典型呈现就是我们熟知的浏览器,在浏览器中我们点击页面上的超链接可以跳转到另一个页面,也可以点击回退回到上一个页面,循环往复,无穷无尽,换句话讲,可以有无限个页面;而在小程序中,由于其mini的特点,小程序多能占用的资源是严格受限的,每个小程序包括图片、样式、页面、代码等最大不能超过2mb(如果加上扩展包最大为4mb),这决定了小程序的页面个数不是不限的,而是严格受限的,且页面之间的跳转也与传统web页面有很大差异,这样一套机制在小程序中称为页面栈。
1页面栈
软件开发者均知道,栈是一种先进后出的数据结构,在小程序体系中,页面栈便是一种采用栈结构维护页面与页面之间关系的框架,该栈的容量最大为5,这意味着在小程序中,可以同时存在的页面最多为5个。
小程序中页面之间的跳转被称为路由,页面路由有严格的规定和限制,所有页面的路由均由页面栈框架进行管理,当发生路由切换的时候,页面栈的表现如下:
上表中的打开新页面、页面重定向、页面返回、tab切换、重启动,在小程序中分别对应wx.navigateto、wx.redirectto、wx.navigateback、wx.switchtab、wx.relaunch等api,这些api是在小程序开发中最常用的功能,它们背后的逻辑以及事件触发均与页面栈紧密相关,只有对这些细节了如指掌,才能真正驾驭小程序的开发,下面便详细剖析上述几种页面流转与页面栈变化的关系,为简洁起见略去页面流转过程中的事件触发,读者可在熟悉页面栈之后阅读官方文档进一步了解。
2页面路由原理
假设我们有一个小程序,其首页页面为a,另外还有b、c、d、e、f、g等六个页面。
打开小程序:用户打开一个小程序时,小程序的首页页面入栈,页面栈大小变为1;
1)wx.navigateto:该api通常在响应用户点击界面时打开一个新页面,该新页面入栈,页面栈大小加1;当反复调用该api后页面栈大小不断增大,当页面栈大小为5时,调用该api将无效,此时的呈现效果即为用户点击界面却无法正常打开对应的新页面,这是很多刚开始小程序开发的开发者经常遇到的一个问题,只有详细了解了页面栈及页面路由的原理才可以解决这个问题;以下为wx.navigateto的两种常见用例:
用例1:在首页a打开页面b,在页面b打开页面c,在页面c打开页面d,在页面d打开页面e,在页面e打开页面f:
该用例与用例1不同之处在于,在页面d重复打开了页面b,此时虽然页面b在页面栈中,但仍会打开一个新页面b并入栈,页面栈大小依然加一,此时页面栈中有2个页面b,这2个页面b是彼此独立的(也即可以拥有不同的数据及呈现),这是很重要的一点,也是很多开发者容易困惑之处。
2)wx.redirectto:该api通常在响应用户点击界面时重定向到一个新页面,原页面出栈,该新页面入栈,页面栈大小不变,以上面的用例1为例,在页面e重定向到页面f:
3)wx.navigateback:该api与传统web浏览器中的页面回退很相似,其delta參数决定当前页面栈弹出几个页面(即页面栈大小减小几),弹出之后的栈顶页面作为当前呈现页面,以下为图例:
相对于上述三个api,
您可能关注的文档
最近下载
- LNGT88J永磁合金工艺研究.docx VIP
- 最校苏教版五年级数学同步思维训练(上册).pdf VIP
- 外研版高中英语选择性必修一Unit-3-The-road-to-success.pptx VIP
- 众兴菌业培训课件.pptx VIP
- 房地产市场年报-2020年天津市房地产市场年报.pdf VIP
- 1. 香港公司註冊證明書.pdf VIP
- 【港交所-2025研报】卓能(集团) 截至二零二四年十二月三十一日止六个月中期业绩报告.pdf VIP
- 2025四川内江市隆昌市兴晟产业投资集团有限公司招聘13人考试备考题库及答案解析.docx VIP
- ISO9001、ISO14001、ISO45001三标一体内部审核检查表.pdf VIP
- 2019年天津房地产市场回顾及2020年展望 .pdf VIP
文档评论(0)