前端框架Vue:vue-router 路由的使用

Vue前端路由

一、路由的基本概念与原理

l路由是一个比价广义和抽象的概念、路由的本质就是对应关系

后端路由

  • 概念:根据不同的用户URL请求,返回不同的内容
  • 本质:URL请求地址与服务器资源之间的对应关系

前端路由

  • 概念:根据不同的用户事件,显示不同的页面内容
  • 本质:用户事件与事件处理函数之间的对应关系

**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D4KWoCao-1607245101425)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201205102801219.png)]**

Vue Router

是Vue.js官网的路由管理器,它和Vue.js的核心深度继承,可以非常方便的用于SPA应用程序的开发

Vue Router包含的功能

  • 支持HTML5历史模式或hash模式
  • 支持嵌套路由
  • 支持路由参数
  • 支持编程式路由
  • 支持路由命名。。。

二、vue-router的基本使用

1、基本使用步骤

  • 引入相关的库文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eoy2yjXG-1607245101427)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201205110151442.png)]

  • 添加路由链接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cDfNDNVr-1607245101429)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201205110707907.png)]

  • 添加路由填充位

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lua089DV-1607245101431)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201205110912896.png)]

  • 定义路由组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-An2Oo4jm-1607245101432)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201205111107024.png)]

  • 配置路由规则并创建路由实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hCVXglA7-1607245101434)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201205111308268.png)]

  • 把路由挂载到Vue根实例中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3iJBw3cf-1607245101436)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201205114416784.png)]

实例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 1、引入相关的库文件 -->
		<script src="js/vue_2.5.22.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/vue-router_3.0.2.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app">
			<!-- 2、添加路由连接 -->
			<router-link to="/user">User</router-link>
			<router-link to="/register">Register</router-link>
			
			<!-- 3、添加路由占位符 -->
			<router-view></router-view>
		</div>
		
		<script type="text/javascript">
			/* 4、定义路由组件 */
			const User = {
				template: `<div>User组件</div>`
			}
			const Register = {
				template: `<div>Register组件</div>`
			}
			
			/* 5、配置路由规则 */
			const router = new VueRouter({
				//所有的路由规则
				routes:[
					{path:'/user',component:User}, //这里的component不接收字符串
					{path:'/register',component:Register}
				]
			})
			
			const vm = new Vue({
				el:'#app',
				data:{
					
				},
				/* 6、挂载路由实例对象 */
				// router:router
				router //当名字一致的时候可以简写
			})
		</script>
	</body>
</html>

2、路由重定向

重定向指的是:用户在访问地址A的时候,强制用户跳转到C,从而展示特定的组件页面;通过路由规则的redirect属性,指定一个新的路由地址,可以很方便地设置路由的重定向

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vdq3NRI4-1607245101437)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201205115429104.png)]

/* 5、配置路由规则 */
			const router = new VueRouter({
				//所有的路由规则
				routes:[
					//路由重定向  redirect
					{path:'/',redirect:'/user'},
					{path:'/user',component:User}, //这里的component不接收字符串
					{path:'/register',component:Register}
				]
			})

三、vue-router嵌套路由

嵌套路由功能分析

  • 点击父级路由链接显示模板内容
  • 模板内容中又有子级路由链接
  • 点击子级路由链接显示子级模板内容

使用实例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 1、引入相关的库文件 -->
		<script src="js/vue_2.5.22.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/vue-router_3.0.2.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app">
			<!-- 2、添加路由连接 -->
			<router-link to="/user">User</router-link>
			<router-link to="/register">Register</router-link>
			
			<!-- 3、添加路由占位符 -->
			<router-view></router-view>
		</div>
		
		<script type="text/javascript">
			/* 4、定义路由组件 */
			const User = {
				template: `<div>User组件</div>`
			}
			const Register = {
				template: `<div>
					<h1>Register组件</h1><hr/>
					
					<router-link to='/register/tab1'>tab1</router-link>
					<router-link to='/register/tab2'>tab2</router-link>
					<router-view />
					
				</div>`
			}
			
			const Tab1 = {
				template:'<h3>tab1子组件</h3>'
			}
			const Tab2 = {
				template:'<h3>tab2子组件</h3>'
			}
			
			/* 5、配置路由规则 */
			const router = new VueRouter({
				//所有的路由规则
				routes:[
					{path:'/user',component:User}, //这里的component不接收字符串
					/*  6、children,数组,配置子路由规则 */
					{path:'/register',component:Register,children:[
						{path:'/register/tab1',component:Tab1},
						{path:'/register/tab2',component:Tab2}
					]}
				]
			})
			
			const vm = new Vue({
				el:'#app',
				data:{
					
				},
				/* 7、挂载路由实例对象 */
				// router:router
				router //当名字一致的时候可以简写
			})
		</script>
	</body>
</html>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aXVGUfHd-1607245101438)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206092824016.png)]

四、vue-router动态路由匹配

思想?如果我们有很多的url地址,那是否需要为每一个url都定义一个组件呢?? 如果有几百几千个url呢?

1、动态匹配路由的基本用法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WHmG7HT5-1607245101441)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206093314052.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IKBpMqom-1607245101444)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206093322933.png)]

实例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 1、引入相关的库文件 -->
		<script src="js/vue_2.5.22.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/vue-router_3.0.2.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app">
			<!-- 2、添加路由连接 -->
			<router-link to="/user/1">User1</router-link>
			<router-link to="/user/2">User2</router-link>
			<router-link to="/user/3">User3</router-link>
			<router-link to="/register">Register</router-link>
			
			<!-- 3、添加路由占位符 -->
			<router-view></router-view>
		</div>
		
		<script type="text/javascript">
			/* 4、定义路由组件 */
			const User = {
				template: `<div>User组件---用户id为:{{$route.params.id}}</div>`
			}
			const Register = {
				template: `<div>Register组件</div>`
			}
			
			/* 5、配置路由规则 */
			const router = new VueRouter({
				//动态路由匹配规则,以冒号开头
				routes:[
					{path:'/user/:id',component:User}, //这里的component不接收字符串
					{path:'/register',component:Register}
				]
			})
			
			const vm = new Vue({
				el:'#app',
				data:{
					
				},
				/* 6、挂载路由实例对象 */
				router 
			})
		</script>
	</body>
</html>

2、路由组件传递参数

$route与对应路由形成高度耦合,不够灵活,所有可以使用props将组件和路由解耦

props的值为布尔类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zRd2ldzE-1607245101445)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206095246248.png)]

props的值为对象类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vBFTgmmF-1607245101445)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206095652504.png)]

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 1、引入相关的库文件 -->
		<script src="js/vue_2.5.22.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/vue-router_3.0.2.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app">
			<!-- 2、添加路由连接 -->
			<router-link to="/user/1">User1</router-link>
			<router-link to="/user/2">User2</router-link>
			<router-link to="/user/3">User3</router-link>
			<router-link to="/register">Register</router-link>
			
			<!-- 3、添加路由占位符 -->
			<router-view></router-view>
		</div>
		
		<script type="text/javascript">
			/* 4、定义路由组件 */
			const User = {
				props:['id','name','age'],
				//注意:通过对象传参的方式,这里的id值是接收不到的
				template: `<div>User组件---用户id为:{{id}}-----名字:{{name}}-----{{age}}</div>`
			}
			const Register = {
				template: `<div>Register组件</div>`
			}
			
			/* 5、配置路由规则 */
			const router = new VueRouter({
				//动态路由匹配规则,以冒号开头
				routes:[
					{path:'/user/:id',component:User,props:{name:'pihao',age:18}}, //这里的component不接收字符串
					{path:'/register',component:Register}
				]
			})
			
			const vm = new Vue({
				el:'#app',
				data:{
					
				},
				/* 6、挂载路由实例对象 */
				router 
			})
		</script>
	</body>
</html>


props的值为函数类型

可以传一些静态数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YG0qpall-1607245101446)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206104149880.png)]

实例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 1、引入相关的库文件 -->
		<script src="js/vue_2.5.22.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/vue-router_3.0.2.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app">
			<!-- 2、添加路由连接 -->
			<router-link to="/user/1">User1</router-link>
			<router-link to="/user/2">User2</router-link>
			<router-link to="/user/3">User3</router-link>
			<router-link to="/register">Register</router-link>
			
			<!-- 3、添加路由占位符 -->
			<router-view></router-view>
		</div>
		
		<script type="text/javascript">
			/* 4、定义路由组件 */
			const User = {
				props:['id','name','age'],
				//注意:通过对象传参的方式,这里的id值是接收不到的
				template: `<div>User组件---用户id为:{{id}}-----名字:{{name}}-----年龄:{{age}}</div>`
			}
			const Register = {
				template: `<div>Register组件</div>`
			}
			
			/* 5、配置路由规则 */
			const router = new VueRouter({
				//路由参数传递为一个 函数
				routes:[
					{path:'/user/:id',component:User,props:route =>({name:'pihao',age:18,id:route.params.id})}, //这里的component不接收字符串
					{path:'/register',component:Register}
				]
			})
			
			const vm = new Vue({
				el:'#app',
				data:{
					
				},
				/* 6、挂载路由实例对象 */
				router 
			})
		</script>
	</body>
</html>

五、vue-router命名路由

为了更加方便的表示路由的路径,可以给路由规则起一个别名,即为“命名路由”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-11ZkhQPs-1607245101447)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206111712492.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FA73rUg6-1607245101447)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206111834348.png)]

实例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 1、引入相关的库文件 -->
		<script src="js/vue_2.5.22.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/vue-router_3.0.2.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app">
			<!-- 2、添加路由连接 -->
			<router-link to="/user/1">User1</router-link>
			<router-link to="/user/2">User2</router-link>
			<!-- 使用命名路由,to需要属性绑定: -->
			<router-link :to="{name:'user',params:{id:3}}">User3</router-link>
			<router-link to="/register">Register</router-link>
			
			<!-- 3、添加路由占位符 -->
			<router-view></router-view>
		</div>
		
		<script type="text/javascript">
			/* 4、定义路由组件 */
			const User = {
				props:['id','name','age'],
				//注意:通过对象传参的方式,这里的id值是接收不到的
				template: `<div>User组件---用户id为:{{id}}-----名字:{{name}}-----年龄:{{age}}</div>`
			}
			const Register = {
				template: `<div>Register组件</div>`
			}
			
			/* 5、配置路由规则 */
			const router = new VueRouter({
				//动态路由匹配规则,以冒号开头
				routes:[
					{
						name:'user', //name,为路由命名
						path:'/user/:id',
						component:User,
						props:route =>({name:'pihao',age:18,id:route.params.id})
					},
					{path:'/register',component:Register}
				]
			})
			
			const vm = new Vue({
				el:'#app',
				data:{
					
				},
				/* 6、挂载路由实例对象 */
				router 
			})
		</script>
	</body>
</html>

六、vue-router编程式导航

  • 声明式导航:通过点击链接实现导航的方式,叫做声明式导航 ,常用的a标签
  • 编程式导航:通过调用JavaScript形式的API实现导航的方式,叫做编程式导航,如:window.href()

1、编程式导航基本用法

常用的编程式导航API如下

  • this.$router.push(‘hash地址’)

  • this.$router.go(n) ,1表示前进一位,-1表示后退一位

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u0scRWKw-1607245101448)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206113113464.png)]

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue_2.5.22.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/vue-router_3.0.2.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app">
		
			<router-link to="/user/1">User1</router-link>
			<router-link to="/user/2">User2</router-link>
			
			<router-link :to="{name:'user',params:{id:3}}">User3</router-link>
			<router-link to="/register">Register</router-link>
			
			
			<router-view></router-view>
		</div>
		
		<script type="text/javascript">
			
			const User = {
				props:['id','name','age'],
				template: `
					<div>
						User组件---用户id为:{{id}}-----名字:{{name}}-----年龄:{{age}}
						<button @click = 'goRegister'>跳转到注册页面</button>
					</div>
					
				`,
				methods:{  
					goRegister:function(){
						this.$router.push('/register')
					}
				}
			}
			const Register = { 
				template: `
					<div>
						<h1>Register组件</h1>
						<button @click = 'goBack'>后退</button>
					</div>
				`,
				methods:{
					goBack:function(){
						this.$router.go(-1); //往后跳转一个页面
					}
				}
			}
			
			
			const router = new VueRouter({
				
				routes:[
					{
						name:'user', //name,为路由命名
						path:'/user/:id',
						component:User,
						props:route =>({name:'pihao',age:18,id:route.params.id})
					},
					{path:'/register',component:Register}
				]
			})
			
			const vm = new Vue({
				el:'#app',
				data:{
					
				},
				
				router 
			})
		</script>
	</body>
</html>

2、编程式导航参数规则

router.push()方法的参数规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UQ1nWgbL-1607245101449)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201206114754424.png)]

实例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="js/vue_2.5.22.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/vue-router_3.0.2.js" type="text/javascript" charset="utf-8"></script>
		
	</head>
	<body>
		<div id="app">
		
			<router-link to="/user/1">User1</router-link>
			<router-link to="/user/2">User2</router-link>
			
			<router-link :to="{name:'user',params:{id:3}}">User3</router-link>
			<router-link to="/register">Register</router-link>
			
			
			<router-view></router-view>
		</div>
		
		<script type="text/javascript">
			
			const User = {
				props:['id','name','age'],
				template: `
					<div>
						User组件---用户id为:{{id}}-----名字:{{name}}-----年龄:{{age}}
						<button @click = 'goRegister'>跳转到注册页面</button>
					</div>
					
				`,
				methods:{  
					goRegister:function(){
						this.$router.push('/register')
					}
				}
			}
			const Register = { 
				template: `
					<div>
						<h1>Register组件</h1>
						<button @click = 'goBack'>后退</button>
					</div>
				`,
				methods:{
					goBack:function(){
						this.$router.go(-1); //往后跳转一个页面
					}
				}
			}
			
			
			const router = new VueRouter({
				
				routes:[
					{
						name:'user', //name,为路由命名
						path:'/user/:id',
						component:User,
						props:route =>({name:'pihao',age:18,id:route.params.id})
					},
					{path:'/register',component:Register}
				]
			})
			
			const vm = new Vue({
				el:'#app',
				data:{
					
				},
				
				router 
			})
		</script>
	</body>
</html>

七、基于vue-router的案例

基于路由实现的综合案例,技术点分析

  • 抽离并渲染App根组件
  • 将左侧菜单路由链接
  • 创建左侧菜单对应的路由组件
  • 在右侧主体区域添加路由路由占位符
  • 添加子路由规则
  • 通过路由重定向默认渲染用户组件
  • 渲染用户列表数据
  • 编程式导航跳转到用户详情页面
  • 实现返回上一页功能
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>基于vue-router的案例</title>
    <style type="text/css">
      html,
      body,
      #app {
        margin: 0;
        padding: 0px;
        height: 100%;
      }
      .header {
        height: 50px;
        background-color: #545c64;
        line-height: 50px;
        text-align: center;
        font-size: 24px;
        color: #fff;
      }
      .footer {
        height: 40px;
        line-height: 40px;
        background-color: #888;
        position: absolute;
        bottom: 0;
        width: 100%;
        text-align: center;
        color: #fff;
      }
      .main {
        display: flex;
        position: absolute;
        top: 50px;
        bottom: 40px;
        width: 100%;
      }
      .content {
        flex: 1;
        text-align: center;
        height: 100%;
      }
      .left {
        flex: 0 0 20%;
        background-color: #545c64;
      }
      .left a {
        color: white;
        text-decoration: none;
      }
      .right {
        margin: 5px;
      }
      .btns {
        width: 100%;
        height: 35px;
        line-height: 35px;
        background-color: #f5f5f5;
        text-align: left;
        padding-left: 10px;
        box-sizing: border-box;
      }
      button {
        height: 30px;
        background-color: #ecf5ff;
        border: 1px solid lightskyblue;
        font-size: 12px;
        padding: 0 20px;
      }
      .main-content {
        margin-top: 10px;
      }
      ul {
        margin: 0;
        padding: 0;
        list-style: none;
      }
      ul li {
        height: 45px;
        line-height: 45px;
        background-color: #a0a0a0;
        color: #fff;
        cursor: pointer;
        border-bottom: 1px solid #fff;
      }

      table {
        width: 100%;
        border-collapse: collapse;
      }

      td,
      th {
        border: 1px solid #eee;
        line-height: 35px;
        font-size: 12px;
      }

      th {
        background-color: #ddd;
      }
    </style>
    <script src="./js/vue_2.5.22.js"></script>
    <script src="./js/vue-router_3.0.2.js"></script>
  </head>
  <body>
    <!-- 要被 vue 实例所控制的区域 -->
    <div id="app">
			<!-- 路由占位符 -->
			<router-view></router-view>
    </div>

    <script>
		/* 定义app的根组件内容 */
		const App = {
			template : `<div>
				<!-- 头部区域 -->
				<header class="header">在线发运后台管理系统</header>
				<!-- 中间主体区域 -->
				<div class="main">
								<!-- 左侧菜单栏 -->
								<div class="content left">
								  <ul>
									<li><router-link to="/users">用户管理</router-link></li>
									<li><router-link to="/rights">权限管理</router-link></li>
									<li><router-link to="/goods">商品管理</router-link></li>
									<li><router-link to="/orders">订单管理</router-link></li>
									<li><router-link to="/settings">系统设置</router-link></li>
								  </ul>
								</div>
									<!-- 右侧内容区域 -->
									<div class="content right"><div class="main-content">
										<router-view/>
									</div></div>
								</div>
								<!-- 尾部区域 -->
								<footer class="footer">版权信息</footer>
			</div>`
		}
		
		<!-- 定义相应的组件 -->
		const Users = {
			data(){
				return {
					userList:[
						{id:1,name:'张三',age:10},
						{id:2,name:'李四',age:20},
						{id:3,name:'王五',age:30},
						{id:4,name:'赵柳',age:40},
					]
				}
			},
			methods:{
				goDetail(id){
					console.log(id);
					//将参数id传递过去
					this.$router.push('/userInfo/'+id) 
				}
			},
			template:`<div> 
				<h3>用户管理区域</h3>
				<table>
					<thead>
						<tr>
							<th>编号</th>
							<th>名字</th>
							<th>年龄</th>
							<th>操作</th>
						</tr>
					</thead> 
					<tbody>
						<tr v-for='(item,index) in userList' :key='item.id'>
							<td>{{item.id}}</td>
							<td>{{item.name}}</td>
							<td>{{item.age}}</td>
							<td>
								<a href='#' @click.prevent='goDetail(item.id)'>查看详情</a>
							</td>
						</tr>
						
					</tbody>
				</table>
			</div>`
		}
		<!-- 定义用户详情页面 -->
		const userInfo = {
			props:['id'],
			methods:{
				//实现后退功能
				goBack(){
					this.$router.go(-1);
				}
			},
			template:`<div>
				<h5>用户详情页面----用户id为:{{id}}</h5>
				<button @click='goBack'>返回上一页</button>
			</div>`
		}
		
		
		const Rights = {
			template:`<div>
				<h3>权限管理区域</h3>
			</div>`
		}
		const Goods = {
			template:`<div>
				<h3>商品管理区域</h3>
			</div>`
		}
		const Orders = {
			template:`<div>
				<h3>订单管理区域</h3>
			</div>`
		}
		const Settings = {
			template:`<div>
				<h3>系统设置区域</h3>
			</div>`
		}
		
		
		<!-- 创建路由对象 -->
		const router = new VueRouter({
			routes:[
				{
					path:'/',
					component:App,
					redirect:'/users',
					children:[ //配置子路由
						{path:'/users',component:Users},
						{path:'/userInfo/:id',component:userInfo,props:true}, //详情页,参数传递开启
						{path:'/rights',component:Rights},
						{path:'/goods',component:Goods},
						{path:'/orders',component:Orders},
						{path:'/settings',component:Settings}
					]
				}
			]
		})
		
		
		const vm = new Vue({
			el:'#app',
			router
			
		})
    </script>
  </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值