Vue学习(路由定义、路由传参方式、子路由)-学习笔记

Vue学习(路由定义、路由传参方式、子路由)-学习笔记

路由定义(见下单个文件)

//Vue中main.js文件
import Vue from 'vue'
import App from './App.vue'
import router from './router' //从这里引入路由
import store from './store'
import './assets/font/iconfont.css'  //字体图标  
import 'bootstrap/dist/css/bootstrap.css'

Vue.config.productionTip = false

new Vue({
  router,  //加载
  store,
  render: h => h(App)
}).$mount('#app')

路由传参方式

用单个文件来理解:(重要)

<!DOCTYPE html>
<html>
<head>
	<title>vue-router</title>
	<script src="vue.js"></script>
	<script src="vue-router.js"></script>
	<style>
		.active {
			color: #f60;
		}
	</style>
	<script>
		//$route  对象 $route.params   query  path   name  meta
		//$router 为vueRouter实例  $router.push()
		// 1、定义组件 
		var Home = {
			template: '#home'
		}
		var News = {
			template: '#news'
		}
		//2、配置路由
		const routes = [
			{path: '/home/:id',name: 'home', component: Home},
			// params方式传参数,path中需要定义参数
			// query方式不需要传参
			{path: '/news', component: News},
			{path: '/', redirect: '/home'}   //重定向  {path: '/*', redirect: '/home'}   //重定向
		];
		// 3. 创建 router 实例,然后传 `routes` 配置
		const router = new VueRouter({
			routes,//routes:routes
			linkActiveClass: 'active' 
		});
		
		window.onload=function(){
			// 4. 创建和挂载根实例。
			new Vue({
				el:'#my',
				router,  //router实例注入到vue实例中
				data:{
					id:999
				}
			});
		}
	</script>
</head>
<template id="home">
	<div>
		<!-- 获取路由参数的方式 
		params  {{$route.params.id}}-->
		<h3>组件home --{{$route.params.id}}</h3>
	</div>
</template>
<template id="news">
	<div>
		<!-- 获取路由参数的方式 
		query  {{$route.query.id}}-->
		<h3>组件news =={{$route.query.id}}</h3>
	</div>
</template>

<body>
	<div id="my">
		<!-- router-link  跳转   <a href="#/home" class="">home</a>
		to 属性指定链接-->
		<!-- 路由传参的方式有二种
		params:/home/1/a/2 
		query:/home?id=1&name=2&psd=123-->
		<!-- <router-link to="/home/100">home</router-link> -->
		<!-- <router-link :to="'/home/'+id">home</router-link> -->
		<router-link :to="{name: 'home', params: { id: id}}">home</router-link>
		
		<!-- <router-link to="/news?id=1234">news</router-link> -->
		<router-link :to="{path: '/news', query: {id: 5678}}">home</router-link>
		<!-- <button @click="goBack()">12</button> -->
		<div>
			<!-- 路由出口
			路由匹配到的组件渲染在这里 -->
			<router-view></router-view>
		</div>
	</div>
</body>
</html>

<!-- Vue-详解设置路由导航的两种方法: <router-link :to="..."> 和router.push(...)
	//声明式  <router-link :to="...">		
	//编程式  router.push(...)

// 声明式的常见方式
<router-link to="/home">home</router-link>
// 对象
<router-link :to="{path:'/home'}">home</router-link>
// 路由通过名称
<router-link :to="{name: 'homename'}">home</router-link>
//直接路由带查询参数query,地址栏变成 /home?id=10
<router-link :to="{path: 'home', query: {id: 10 }}">home</router-link>
// 命名路由带查询参数query,地址栏变成/home?id=10
<router-link :to="{name: 'homename', query: {id: 10 }}">home</router-link>
//直接路由带路由参数params,params 不生效,如果提供了 path,params 会被忽略
<router-link :to="{path: 'home', params: { id: 10 }}">home</router-link>
// 命名路由带路由参数params,地址栏是/home/10
<router-link :to="{name: 'homename', params: { id: 10 }}">home</router-link>


二、router.push(...)方法
// 字符串
router.push('/home')
// 对象
router.push({path:'/home'})
// 路由通过名称
router.push({name: 'homename'})
//直接路由带查询参数query,地址栏变成 /home?id=10
router.push({path: 'home', query: {id: 10 }})
// 命名路由带查询参数query,地址栏变成/home?id=10
router.push({name: 'homename', query: {id: 10 }})
//直接路由带路由参数params,params 不生效,如果提供了 path,params 会被忽略
router.push({path:'homename', params:{ id: 10 }})
// 命名路由带路由参数params,地址栏是/home/10
router.push({name:'homename', params:{ id: 10 }})
-->

二级路由

可见代码:https://gitee.com/monkeyhlj/vue-learning

动态面包屑路由组件

在这里插入图片描述
在这里插入图片描述

路由中的props属性(了解)

在这里插入图片描述
props里面可写函数,比较灵活。
在这里插入图片描述

路由拦截

常应用于登录–判断用户是否登录过—>本地存储----->首页
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值