本篇文章給大家?guī)砹岁P(guān)于微信小程序的相關(guān)知識,其中主要介紹了關(guān)于頁面路由的相關(guān)內(nèi)容,路由是指分組從源到目的地時,決定端到端路徑的網(wǎng)絡(luò)范圍的進(jìn)程,下面就一起來看一下,希望對大家有幫助。

什么是路由?
路由(routing)是指分組從源到目的地時,決定端到端路徑的網(wǎng)絡(luò)范圍的進(jìn)程。我們可以理解微信小程序頁面路由,根據(jù)路由規(guī)則(路徑)從一個頁面跳轉(zhuǎn)到另一個頁面的的規(guī)則。
一、哪些會觸發(fā)頁面跳轉(zhuǎn)
小程序啟動,初始化第一個頁面
跳轉(zhuǎn)新頁面,調(diào)用wx.navigateTo 或者 <navigator />
頁面重定向,調(diào)用wx.redirectTo 或者 <navigator />
頁面返回,調(diào)用wx.navigateBack ,頁面左上角返回按鈕
wx.switchTab實現(xiàn)tabBar頁面切換
Tips: 所有頁面都必須在app.json中注冊,例如
{
"pages": [
"pages/index/index",
"pages/classification/classification",
"pages/start/start",
"pages/detail/detail",
]
}二、微信小程序中實現(xiàn)頁面路由的幾種方式
wx.navigateTo,保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面,但是不能跳到 tabbar 頁面
wx.navigateTo({
url: 'pages/detail/detail',
success: function(res) {},
...
})wx.redirectTo,關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面,但是不允許跳轉(zhuǎn)到 tabbar 頁面
wx.redirectTo({
url: 'pages/detail/detail',
success:function(res){},
...
})<navigator />組件跳轉(zhuǎn)方式
<navigator url=pages/detail/detail">跳轉(zhuǎn)</navigator>
wx.navigateBack返回上一頁
wx.navigateBack({
delta: 1,
})Tips: delta為1時表示返回上一頁,為2時表示上上一頁,以此類推;如果dalta大于已打開的頁面總數(shù),則返回到首頁。返回后,元界面會銷毀
wx.switchTab跳轉(zhuǎn)到 tabBar 頁面,并關(guān)閉其他所有非 tabBar 頁面
app.json:
{
"tabBar": {
"list": [{
"pagePath": "pages/index/index",
"text": "首頁",
},
{
"pagePath": "pages/car/car",
"text": "購物車",
},
...
}
}index.js:
wx.switchTab({
url: 'pages/car/car'
})三、小程序路由實現(xiàn)原理
小程序路由是通過自己實現(xiàn)的一個棧(先進(jìn)先出)來管理的。
當(dāng)我們通過wx.navigateTo或者<navigator/>從A頁面跳轉(zhuǎn)到B頁面時。路由棧的變化是這樣的。

路由棧剛開始只存有頁面A,當(dāng)使用wx.navigateTo跳轉(zhuǎn)后,頁面B推入路由棧并展示到界面上,頁面A隱藏。
當(dāng)我們使用wx.navigateBack返回時

那么wx.redirectTo與wx.navigateTo有什么區(qū)別呢?
假如當(dāng)前已經(jīng)在二級頁面B上,我們使用wx.redirectTo跳轉(zhuǎn)到C頁面,其過程是這樣的。

如當(dāng)前已經(jīng)在二級頁面B上,我們使用wx.redirectTo跳轉(zhuǎn)到C頁面,其過程是這樣的。
頁面B會被pop出,然后C頁面再push進(jìn)入棧,這個時候棧中還是只有兩個頁面。






