扫码点单、查快递、缴水电费——如今很多日常操作背后,跑着的可能都是微信小程序。这类依附在微信里的小应用不用下载安装,把“获取服务”压缩到扫一扫或搜一下的功夫,用完即走,几乎零成本。
不过站在开发者的角度看,一个小程序往往不止一个页面。首页、列表页、详情页、个人中心,用户要在它们之间来回穿梭,靠的就是页面跳转。这能力看着基础,却直接决定着整个应用的手感顺不顺。
小程序的跳转大体分两类:一类是导航跳转,用户点按钮、链接或列表项,从当前页面被带往目标页面;另一类是底部标签栏跳转,直接点底部常驻的几个标签来切换,思路和传统 App 的 Tab 切换差不多。
先说导航跳转。微信为此提供了几个 API,各有各的脾气。

最常用的是 navigateTo。它会保留当前页面,把新页面压进页面栈,用户点左上角的返回箭头就能回到上一页——从商品列表点进商品详情,就是最典型的场景。不过页面栈最多只能叠十层,层级嵌得太深时系统会拒绝继续跳转,开发时很容易在这里踩坑。
那要是压根不需要返回呢?redirectTo 就派上用场了。它先关闭当前页面,再打开新页面,用户回不去了。登录流程是最常见的例子:账号密码验证通过后,用 redirectTo 进入主页,用户按返回键不会再掉回登录页,整个流程干净得多。
reLaunch 比 redirectTo 更彻底,会关闭所有已打开的页面,只留新开的这一个。它适合需要“重置”用户路径的时刻,比如支付完成后回到首页,或者引导用户重新走一遍核心流程。
还有一个特殊角色是 switchTab,专门负责跳到 tabBar 页面。只要目标页面配置在底部标签栏里,navigateTo 和 redirectTo 都无能为力,只能用它。另外要留意,标签页只会加载一次,之后的切换触发的是 onShow 而非 onLoad——如果习惯把逻辑写进生命周期里,这个差别很容易被忽略。

至于底部标签栏跳转,本质上也是调 switchTab,区别只在于触发方式从代码变成了用户直接点标签。入口常驻、状态保留、切换起来没有心智负担,电商和内容类的小程序基本都离不开它。
说到底,几种方式没有绝对优劣,关键看业务逻辑和用户预期。用户觉得“应该能返回”的地方,你用了 redirectTo,他会困惑;反过来,流程明明已经终结,还留一串可以退回去的页面,同样不合理。选择哪种跳转,本质上是在管理页面栈,也是在管理用户的心智。
当然,页面跳转只是小程序交互的一部分。模态弹窗、全局导航、页面间传参,这些能力同样重要——尤其参数传递:用户点进商品详情时“看的是哪个商品”,全靠跳转时带上的参数。把这些交互手段组合用好,用户才会觉得一个小程序“顺手”,愿意一用再用。这也正是页面跳转作为开发基本功的价值——不起眼,却处处影响着体验。

تسجيل الدخول الآن