小程序里的页面切换,表面看只是点一下跳过去,实际到了开发里往往要分场景处理。不同进入路径、页面栈关系,都会直接影响返回行为和用户体验。下面整理几种比较常用的跳转方式,既有不用改代码、适合外部推广的做法,也有小程序原生 API 的用法。
如果链接要拿去投广告、印海报、发短信,或者放进公众号文章里,直接使用小程序的开发路径并不方便。这时可以借助快缩短网址生成一个小程序跳转链接。打开快缩短网址的跳转小程序功能页面(https://www.suo.run/mini),登录账号进入控制台;在左侧菜单里找到【跳转小程序】-【跳转微信小程序】,点击【创建小程序链接】按钮,按页面要求填写目标小程序、落地页路径和参数等信息,就能生成一条可用于外部投放的小程序链接。这样做的好处是不用频繁发版调整代码,链接还可以集中管理,比较适合运营、推广和私域触达场景。
如果是小程序内部的页面跳转,最常用的还是 navigateTo。在点击事件的回调函数里,直接调用 wx.navigateTo,把目标页面路径传给 url 字段即可。例如:

wx.navigateTo({ url: '../detail/detail' })
它会保留当前页面,新页面打开后,用户可以通过左上角返回或调用 navigateBack 回到上一页。像列表到详情、首页到子页面这类需要“前进—返回”的常规流程,用它比较合适。除了在 JS 里写,wxml 里也可以用 navigator 组件做声明式跳转,效果基本一致,就看个人习惯和项目结构。

有些场景不希望用户返回到上一个页面,比如登录成功后跳转首页、表单提交后跳转结果页,这时可以用 redirectTo。它的作用是关闭当前页面,再打开目标页面,页面栈不会越积越深。写法同样简单:
wx.redirectTo({ url: '../detail/detail' })
如果跳转的同时还要清空整个页面栈,比如从某个深层页面直接回到首页,或者用户退出登录后重置到初始页面,使用 reLaunch 更合适。reLaunch 会关闭所有已打开页面,然后打开指定页面:
wx.reLaunch({ url: '../detail/detail' })
这两个方法的区别主要在于当前页面是否保留、返回历史是否被清空。实际选哪一个,要看业务上是否还有“回退”的必要。
实际开发中,这几种方式通常配合使用:内部常规跳转用 navigateTo;不希望返回或页面栈过深时用 redirectTo;需要一次清空历史时用 reLaunch;而面对推广、投放、二维码等外部场景,用生成好的小程序链接会更省事。把跳转逻辑和业务场景对齐,页面流转才能更顺,也减少用户误入或反复点按的困扰。

立即登录