在一个多页面的小程序里面所有页面的路由全部是由框架来管理,框架以栈的形式维护所有的小程序页面。
小程序有六种路由方式每种路由方式对应页面栈的表现:1、初始化 对应页面栈表现 新页面入栈(只有一个页面A); 2、打开新页面 对应页面栈表现 新页面入栈(有两个页面A和B);
3、页面重定向 对应页面栈表现 当前页面出栈,新页面入栈(在当前的B页面跳转C页面,B页面出栈,C页面入栈,只有A页面和C页面);
4、页面返回 对应页面栈表现 页面不断出栈,直到目标返回页,新页面入栈(在当前的C页面点击返回之后,C页面出栈,只有A页面);
5、6、Tab 切换 和 重加载 对应页面栈表现 页面全部出栈,只留下新的Tab页面 和只留下新的页面(之前页面栈的页面全部出栈,只留下新的Tab页面),如图:
路由的触发方式以及对应页面生命周期的函数:1.在初始化路由方式,页面触发 onLoad,onShow 生命周期的函数;
2.打开新页面 调用API(wx.navigateTo)或使用navigator组件,打开新的页面,之前页面会触发 onHide 生命周期的函数,打开新的页面会触发 onLoad,onShow 函数;
3.页面重定向 调用API(wx.redirectTo)或使用navigator组件,重定向后的页面会触发 onLoad,onShow 方法;
4.从当前页面返回时候 调用API(wx.navigatorBack)或使用navigator组件或用户按左上角返回按钮,在返回页面之前页面会调用 onUnload生命周期的函数,
返回页面之后页面会触发onShow 方法;
5.Tab 切换 调用API(wx.swithTab)或使用navigator组件或点击小程序下方的 Tab组来切换;
6.重启动 调用API(wx.reLaunch)或使用navigator组件 ,在重启动之前页面会出现 onUnload生命周期的函数,在重启动之后页面会出现会触发 onLoad,onShow函数,如图: