亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

uni-app 路由跳轉和傳參

1. 前言

在沒接觸過 web 開發之前,大家對路由這兩個字應該也比較熟悉,就是我們平時使用無線網絡時接觸到的路由器。

其實 web 開發中的路由與我們平時接觸到的路由器原理是一樣的,都是將不同的請求地址轉發給相應的控制器進行處理。

在 web 開發中的路由會根據不同的 url 將請求分配到能處理這個 URL 的程序或模塊,根據不同的 url 地址展示不同的頁面或內容。

uni-app 有自己的一套路由管理方式,與 Vue Router 不同。頁面路由需要在 pages.json 文件中配置,與小程序在 app.json 中配置頁面路由是類似的。

那路由在項目中的具體作用是怎樣的呢?我們這節課來了解一下。

2. 路由的優缺點

2.1 優點

  • 網頁更加流暢

傳統web開發的每一次請求都需要服務器來進行處理,但是有些操作只需要修改頁面邏輯就可以實現用戶需要的效果,不用請求服務器,這時路由就派上用場了。

使用路由開發,用戶的請求不需要每次都經過服務器來處理,提高了網頁的流暢性,可以快速將網頁內容展現給客戶。

  • 方便用戶分享收藏網頁

使用路由進行開發,頁面內容會根據 url 的改變而改變,而不會像js處理的那樣,只修改了頁面內容,而不會改變 url。所以當用戶收藏與分享頁面時,通過 url 就會直接打開指定的頁面,用戶體驗較好。

2.2 缺點

  • 沒有合理利用緩存

使用瀏覽器時,點擊瀏覽器的前進,后退按鈕,使用路由開發的項目,會重新發送請求,緩存利用不合理。

  • 無法記住當前頁面的滾動位置

在使用瀏覽器的前進,后退按鈕時,單頁面無法記住之前滾動的位置。

3. 配置路由

3.1 自動配置路由

我們來創建一個 page1 頁面。右鍵點擊 pages 文件夾,選擇新建頁面。在下面新彈出的窗口,系統會默認幫我們勾選“在 pages.json 中注冊的選項”,這樣頁面創建完成后,路由也會自動配置好。

點擊創建,現在 pages.json 文件中會自動添加下面的路由代碼。

實例:

{
  "path" : "pages/page1/page1",
  "style" : {}
}

3.2 手動配置路由

如果需要自己手動添加路由,直接在 pages.json 文件的 pages 對象中添加即可。我們一般配置 path 和 style 兩個屬性。

自己配置的時候要注意大括號要配對,不要落下逗號。

4. 路由跳轉

uni-app 有兩種方式進行路由跳轉:使用 navigator 組件跳轉、調用 API 跳轉,下面我們來分別了解這兩種方式如何跳轉。

我們來實現從 index 頁面跳轉到剛剛創建的 page1 頁面,編輯 pages/index/index.vue 文件。

在 data 中添加變量 url。

實例:

data() {
  return {
    url:"/pages/page1/page1"
  }
}

然后在 template 標簽中添加下面代碼。

實例:

<!-- open-type的表示跳轉方式 -->
<!-- open-type為navigate,如果不寫open-type跳轉方式默認為navigate -->
<navigator :url="url" open-type="navigate">
  <button type="default">跳轉到新頁面</button>
</navigator>
<!-- open-type為redirect -->
<navigator :url="url" open-type="redirect">
  <button type="default">在當前頁打開</button>
</navigator>
<!-- open-type為switchTab -->
<navigator :url="url" open-type="switchTab">
  <button type="default">跳轉到tab頁面</button>
</navigator>

點擊工具欄–運行–運行到內置瀏覽器,查看效果。點擊按鈕就能通過open-type指定的跳轉方式跳轉到 page1 頁面。

4.2 API 跳轉

繼續編輯 pages/index/index.vue 文件,我們創建幾個 methods 方法,在方法里面實現頁面跳轉。

實例:

navigateTo(){
  uni.navigateTo({
    url: this.url
  })
},
redirectTo(){
  uni.redirectTo({
  url: this.url
  });
},
switchTab(){
  uni.switchTab({
    url: this.url
  });
}

在 template 標簽中添加下面代碼,添加點擊事件。

實例:

<button type="default" @tap="navigateTo">跳轉到新頁面</button>
<button type="default" @tap="redirectTo">在當前頁打開</button>
<button type="default" @tap="switchTab">跳轉到tab頁面</button>

這樣我們就可以點擊工具欄–運行–運行到內置瀏覽器查看效果了,與上面的效果是一樣的

5. 路由傳值

從 A 頁面跳轉到 B 頁面,我們想要將 A 頁面的值傳到 B 頁面,可以將要傳遞的值直接在跳轉頁面的 URL 路徑后面拼接,然后再在 B 頁面 onload 里面接收這個值。

現在我們想要從 index 頁面跳轉到 page1 頁面,在 index 頁面中,將想要傳遞的值拼接到 url 的后面,下面我們寫代碼演示一下。

編輯 pages/index/index.vue 文件。

實例:

// 添加跳轉按鈕
<button type="default" @tap="navigateData">跳轉到 page1 頁面</button>

//添加 navigateData 方法,將參數拼接到 URL 后面
navigateData(){
  uni.navigateTo({
    url: this.url + "?data='我是從 index 頁面傳過來的值'"
  })
}

接下來在 page1 頁面接收參數,編輯 pages/page1/page1.vue 文件。

實例:

onLoad(options) {
  var data = options.data
  console.log(data)
}

點擊工具欄–運行–運行到內置瀏覽器,查看效果。點擊「跳轉到 page1 頁面」的按鈕,跳轉到 page1 頁面后,在控制臺會打印出傳遞過來的data值。

Tips:url有長度限制,太長的字符串會傳遞失敗,可以使用緩存、窗體通信等解決。

6. 小結

本節課程我們主要學習了路由以及路由傳參,本節課程的需要掌握的重點如下:

  • 了解路由是什么,掌握路由的配置;

  • 掌握路由的兩種跳轉方式:navigator 組件跳轉、調用 API 跳轉;

  • 掌握路由的傳參。