初識 Vue Router2 0 路由

2022-07-22 06:57:15 字數 4669 閱讀 3413

目錄第一次使用路由:

什麼是:路由?

vue的router外掛程式功能類似標籤,但更為強大的是可以實現不跳轉頁面通過呼叫元件模板來更新頁面內容

[原理]:頁面在渲染時將[router-link]渲染成a標籤,通過to屬性指定連線url ,這就像是[herf],之後再利用[router-view]路由的出口,路由匹配到的元件將渲染這裡

完成一整個router渲染大致分為4步:↓

**********html*****====

go以及router-view 路由檢視讓路由連線到的內容顯示在這裡

下面再看js部分

**********=js**********=

第一步:定義(路由)元件模板

const go=;

const back=;

一般模板與router-link標籤成一一對應關係

第二步:定義路由配置

每乙個路由都定義乙個元件

const routes=[,];

格式就是個數字包物件,每乙個物件都是乙個路由配置

"path"就是路由位址,再由位址訪問指定模板,用"componentent"屬性找到對應的模板

第三部:建立乙個router的例項,將定義的ronter的配置傳給它

const router=new vuerouter(,

//

// ];

}) 第四步:最後將router例項配置到vue例項中

router,

})

這樣初步的基本(乞丐版)路由就完成了

在頁面上就會出現兩個a標籤點選分別渲染顯示對應的模板內容:go&back ;

了解了路由的基本工作流程後,下面再來看看路由的動態建立

注意!這裡要說的是當路由引數從/user/1/user/2的時候,原來的元件例項會被復用,因為這兩個渲染同乙個元件,這樣比銷毀再建立更加節省效能,不過這樣也以為這組建的生命週期的鉤子函式不會再被呼叫

可以通過路由模板元件的watch屬性來監聽指定路由物件的變化;

在看例子之前先了解一下路由例項$route裡面的幾個屬性

$route.path

型別:string 對應當前路由的路徑 總是解析為絕對路徑 例如:"/user/info"

$route.params

型別:object 包含了動態片段和全匹配片段 如果路路由沒有引數就是個空物件

$route.query

型別:object 查詢引數 例如:/user/info?name=aa

$route.query.name=="aa"

$route.hash

型別:string 當前路由的雜湊值(帶著#) 沒有就是空字串

$route.fullpath

型別:string 完整的url

$route.name

型別:string 當前路由的名字

**********=html**********====

使用者2**********===js**********====

cont user=}"的這個params是路由例項的乙個屬性表示/user/後面的值(也可以理解為後面的引數)

template:"",

通過路由模板元件的`watch`屬性來監聽指定路由物件的變化

watch:

}};const router=new vuerouter(

] ":id就是/user/後面的值 通過id的匹配來決定連線哪個模板"

}); router,

});

路由通過巢狀可以實現一些二級或多級路由渲染(乙個路由渲染完後裡面還可以有乙個路由)實現思路與vue元件巢狀類似

在模板裡面再寫[router-link]標籤,然後再給裡面這個路由配置和模板

是通過路由位址的匹配來實現渲染對應的模板

**********=html**********

** 個人

**********==js**********===

const user=;

const info=;

const router=new vuerouter(,

]});

下面先介紹幾個router.push的幾個用法

1.router.push("/index") 寫在在外面可在載入頁面時直接對應元件渲染

2.router.push()跟上面效果一樣

3.router.push(}) 可不傳位址利用配置路由的name屬性找到對應配置

4.router.push(})帶查詢引數

new vue();

還有一種方法:router.replace,跟router.push一樣,只有乙個不同就是不會向history棧中新增記錄而好似直接替換掉之前的記錄,所以不會在瀏覽器留下記錄(無法返回和前進),這跟原生中window.history.replacestate一樣

}, getinfo()})

}, go()

}})

官方:有時候想同時(同級)展示多個檢視,而不是巢狀展示,例如建立乙個布局,有 sidebar(側導航) 和 main(主內容) 兩個檢視,這個時候命名檢視就派上用場了。你可以在介面中擁有多個單獨命名的檢視,而不是只有乙個單獨的出口。如果 router-view 沒有設定名字,那麼預設為 default。

[乙個檢視使用乙個元件渲染,因此對於同個路由,多個檢視就需要多個元件。確保正確使用 components 配置(帶上 s)]

***************=html********************==

一號店 二號店

***************==js********************====

const person1=;

const person2=;

const person3=;

const person4=;

const person5=;

const person6=;

以上6個模板分兩組顯示

const router=new vuerouter(},}]

});

這個非常好理解,設定兩個路由標籤a和b,此時給a的path位址重定向到b身上,此時a.path=b.path,點選a渲染b的內容

核心就是[路由物件上的redirect屬性]

看例子↓

**********====html**********====

bb ***************js**********====

const a=;

const b=;

這裡用三種方法(基本都一樣)來實現,但重定向操作必須寫在前面

第一種:將path為"/a"的路由,重定向到path為"/b"的路由

const router=new vuerouter(, ,

]});

第二種:將path為"/a"的路由,重定向到name為bb的路由

const router=new vuerouter(}, ,

]});

第三種:將path為"/a"的路由,定向到路由物件path為"/b"的路由物件

const router = new vuerouter(}, ,

]});

new vue({

router

Vue router2 0基礎,秒會。

如果不是模組式開發,請先引入 src script src script 1.0基礎to foo go to foorouter link to bar go to barrouter link p router view div 0.如果使用模組化機制程式設計,匯入vue和vuerouter,要呼...

Vue router2 0設定頁面的title

今天在用vue2.0 vue router2.0寫spa的時候,遇到乙個功能 在跳到乙個文章詳情頁的時候,此時頁面的title要是文章的title,並且這個文章的title是非同步獲取的 在vue router1.0的時候,還可以在router配置各個路由的時候給每個路由加上title屬性,就可以改...

vue cli3路由vue router用法

npm install vue router main.js檔案內 匯入vue router import vue from vue vue router是以來vue的 import vuerouter from vue router 匯入vue router,注意import vuerouter ...