(精華2020年5月8日更新) vue教程篇 vue-router路由的使用
基本用法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>路由基本用法</title>
<style>
/* .router-link-active{
font-size:20px;
color:#ff7300;
text-decoration:none;
} */
.active{
font-size:20px;
color:#ff7300;
text-decoration:none;
}
</style>
<script src="js/vue.js"></script>
<script src="js/vue-router.js"></script>
</head>
<body>
<div id="itapp">
<div>
<!-- a標籤 -->
<router-link to='/home' >主頁</router-link>
<router-link to='/news'>新聞</router-link>
</div>
<div>
<!-- 用來顯示內容 -->
<router-view></router-view>
</div>
</div>
<script>
// 1.定義元件
var Home={
template:'<h3>我是主頁</h3>'
}
var News={
template:'<h3>我是新聞</h3>'
}
// 2.配置路由
var routesAll= [{
path:'/home',
component:Home
},{
path:'/news',
component:News
}];
//3. 建立路由例項
var router = new VueRouter({
routes:routesAll,
mode:'hash', //history
linkActiveClass:'active' //當前所處的連結的class
})
// 4.將router掛載在vue例項上
new Vue({
el:'#itapp',
// router:router ,
router //注入路由
});
</script>
</body>
</html>
路由巢狀傳遞引數和路由守衛
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>路由巢狀和引數傳遞 tag</title>
<style>
.active {
font-size: 20px;
color: #ff7300;
text-decoration: none;
}
</style>
<script src="js/vue.js"></script>
<script src="js/vue-router.js"></script>
</head>
<body>
<div id="itapp">
<div style="position: fixed;top:180px">
<router-link to="/home">主頁</router-link>
<router-link to="/user">使用者</router-link>
</div>
<div style="height:2000px">
<router-view></router-view>
</div>
<hr>
<button @click="push">新增路由</button>
<button @click="replace">替換路由</button>
</div>
<template id="user">
<div style="height:2000px">
<h2>使用者資訊</h2>
<ul>
<router-link to='/user/login?name=tom&pwd=123'>使用者登入</router-link>
<router-link to='/user/regist/alice/456'>使用者註冊</router-link>
</ul>
<router-view></router-view>
</div>
</template>
<script>
var Home = {
template: '<div><h3>我是主頁 {{$route.params}}</h3></div>'
}
var User = {
template: '#user'
}
var Login = {
template: '<h4>使用者登陸。。。獲取引數:{{$route.query}},{{$route.path}}</h4>'
}
var Regist = {
template: '<h4>使用者註冊。。。獲取引數:{{$route.params}},{{$route.path}}</h4>'
}
const routes = [{
path: '/home',
name: 'home',
component: Home
},
{
path: '/user',
name: 'user',
component: User,
beforeEnter(from, to, next) {
console.log(`from ${from.fullPath},to ${to.fullPath}`);
setTimeout(() => {
next();
}, 500)
},
// beforeLeave(from,to,next){
// console.log(`from ${from.fullPath},to ${to.fullPath}`);
// console.log('beforeLeave');
// next();
// },
//子路由使用: 需要在上一級 (User)路由頁面加上router-view
// 子路由使用,需要再上一級路由頁面加上 router-view 顯示。
// 使用children屬性實現路由巢狀,子路由path前不要加/,否則永遠以根路徑開始請求
children: [{
path: 'login',
name: 'login',
component: Login
}, {
path: 'regist/:username/:password',
name: 'regist',
component: Regist
}]
},
{
path: '*',
redirect: '/home'
}
]
const routerAll = new VueRouter({
routes: routes, //簡寫,相當於routes:routes
linkActiveClass: 'active', //更新活動連結的class類名,預設的啟用的 class
linkExactActiveClass: 'active-extact', //精確啟用的 class
mode: "hash", //預設
// 頁面跳轉後,頁面是否滾動
scrollBehavior(to, from, savedPostion) {
if (savedPostion) {
return savedPostion;
} else {
return {
x: 0,
y: 0
}; //每次切換頁面都是滾動到頁面頂部
}
}
});
var vm = new Vue({
el: '#itapp',
router: routerAll, //注入路由
// test:routerAll, //一般不這麼寫
methods: {
push() {
// 1.字串形式
// this.$router.push('/home')
// //2. 物件
// this.$router.push({
// path:'/home'
// })
// //2. 物件,帶查詢引數
// this.$router.push({
// path:'/home',
// query:{
// plan:'private'
// }
// })
// 獲取引數$route.query, 相當於get
// 3.命令路由
// this.$options.test({
// name:'home',
// params:{
// userid:'123'
// }
// });
this.$router.push({
name: 'home',
params: {
userid: '123'
}
})
// 獲取引數$route.params
},
replace() {
routerAll.replace({
path: 'user'
}); //替換路由,沒有歷史記錄
}
}
});
</script>
</body>
</html>
相關文章
- (精華2020年5月8日更新) vue教程篇 vue-router路由的許可權控制Vue路由
- (精華2020年5月4日更新) vue教程篇 計算屬性computed的使用Vue
- (精華2020年5月4日更新) vue教程篇 v-show和v-if的使用Vue
- vue全家桶 ---vue-router路由篇Vue路由
- (精華2020年5月20日更新) vue教程篇 父子元件相互傳參Vue元件
- (精華)2020年7月14日 vue vue-router動態路由的實現許可權控制Vue路由
- (精華2020年5月4日更新) vue教程篇 簡單小結(1)-使用者管理Vue
- vue-router路由之路-極簡教程Vue路由
- (精華2020年5月4日更新) vue教程篇 事件簡寫和事件物件$eventVue事件物件
- vue2進階篇:vue-router之命名路由Vue路由
- (精華2020年5月22日更新) react基礎篇 元件的使用React元件
- (精華2020年5月21日更新) vue實戰篇 實時通訊websocket的封裝結合vue的使用VueWeb封裝
- (精華2020年5月17日更新) vue實戰篇 手寫vue底層原始碼Vue原始碼
- (精華2020年5月4日更新) vue教程篇 v-text,v-html,v-once,v-pre,v-cloak的使用VueHTML
- vue-router路由基礎Vue路由
- vue-router 巢狀路由Vue巢狀路由
- vue-router教程Vue
- vue路由例項(vue-router)(vue版本2.9.2)Vue路由
- vue-router 原始碼:路由模式Vue原始碼路由模式
- vue-router 原始碼:前端路由Vue原始碼前端路由
- 一起學Vue:路由(vue-router)Vue路由
- (精華)2020年7月17日 vue mixins的使用Vue
- 淺談Vue-router使用方法及動態路由和巢狀路由的使用Vue路由巢狀
- vue-router的使用Vue
- vue2.0學習筆記(八):vue-router 路由配置(1)–基礎篇Vue筆記路由
- (精華)2020年7月10日 Node.js express(router路由的使用)Node.jsExpress路由
- vue-router控制路由許可權Vue路由
- 3 vite vue-router 路由巢狀ViteVue路由巢狀
- vue--前端路由及vue-router兩種模式Vue前端路由模式
- (精華2020年5月25日更新) react基礎篇 react-hooks的useState用法ReactHook
- Vue-Router的使用方法Vue
- Vue-router的使用姿勢Vue
- vue-Router中name的使用Vue
- [精讀原始碼系列]前端路由Vue-Router原始碼前端路由Vue
- (精華2020年5月25日更新) react基礎篇 react-hooks的useContext用法ReactHookContext
- vue從入門到進階:vue-router路由功能(九)Vue路由
- (精華2020年6月24日更新)asp.net core3.1實戰篇 RabbitMQ的使用一(安裝Erlang)ASP.NETMQ
- vue升級之路(三)-- vue-router的使用Vue