目錄第一次使用路由:
完成一整個router渲染大致分為4步:↓什麼是:路由?
vue的router外掛程式功能類似
標籤,但更為強大的是可以實現
不跳轉頁面
通過呼叫元件模板來更新頁面內容[
原理
]:頁面在渲染時將[router-link]
渲染成a標籤,通過to屬性
指定連線url ,這就像是[herf],之後再利用[router-view]路由的出口
,路由匹配到的元件將渲染這裡
**********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 ...