路由的配置

Vue路由的配置

准备工作:搭建脚手架

(1)安装 vue-cil : npm install vue-cli -g
(2)检查是否安装成功: vue-V
(3)初始化一个新的项目:vue create 项目名称

一. 一级路由的配置

(1)引入路由

	import Vue from 'vue'
	import Router from 'vue-router'
	// 在vue中使用路由
	Vue.use(Router)

(2)创建路由实例

// (1) 引入相应的组件
	 import Home from "@/views/homes"
 
	// 创建路由实例
	let router = new Router({
		// (2) 当在浏览器上访问这个path时,就映射到相应的路由组件
		routes:[
	        {
	        	path:"/home",  // 组件的路径
	        	component:Home // 路由组件的名称
	        }
	     ]
	})

通用写法:
创建路由表并配置在路由器中

// (1) 路由表存储在数组 routes中

var routes = [
	
	   {
	     path:路径,
	     component:路由组件
	   },
	]
	
	// 路由实例
	let router = new Router({
	    routes
	})
	   
	export default router

(3)切换路由组件

		a标签:会产生页面的跳转, 可以使用 声明式导航router-link切换
  //  转换此标签为li,点击跳转到 url为 /main 的组件
    <router-link to="/main" tag="li"  > 
     
    </router-link>

二. 多级路由的配置

在创建路由表的时候,可以为每一个路由对象创建children属性,值为数组;这个里面可以配置一些路由对象来使用多级路由。

二级路由有两种写法:

const routes = [
			
	{path:'/main',component:AppMain},
	 // 一级路由
	  {
	  	path:'/news',
	  	component:AppNews,
	  
	  // 二级路由 (两种写法)
	  	children:[
	   	  {
	    	// (1)'/news'代表一级路由的path,前面加 '/'
	    	path:"/news/inside",
	    	component:AppNewsInside
	     },
	     {
	    	// (2) 不写一级路由的路径,也不要写 '/'
	    	path:'outside',
	    	component:AppNewsOutside
	     }
	   ]},
	]

二级路由组件的切换位置依然由router-view来指定

(要指定在父级路由组件的模板中)

<router-link to='inside'>inside</router-link>
<router-link to='outside'>outside</router-link>

 <router-view></router-view>

三. 路由的懒加载

懒加载也叫延迟加载,即:在需要的时候进行加载,随用随再。
为什么要用懒加载:

在单页应用中,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多、延时过长,不利于用户体验。

而运行懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时。

非按需加载则会把所有的路由组件快js包打在一起,当业务包很大的时候建议用路由的按需加载(懒加载)

按需加载会页面第一次请求的时候,把相关路由组件块的js添加上

( 观察Network,里面的js文件拆分成了多个,只有访问的时候才让wabpack切割它,并进行异步加载,加载出的结果会被缓存,未来可以进行重渲染 )
语法:

// 不需要单独引入组件了
   {
      path: '/about',
      name: 'about',
      
      // component:Center,
      // 换成路由懒加载方式,在component中引入组件
      component:()=>import("@/views/Center"),
    }
	    

默认切割后的js文件名是数字

设置切割后的js的别名:

// 通过注释进行修改
 component:()=>import(/* webpackChunkName: "cinema" */"@/views/Cinema")

四. 默认路由和重定向

当我们进入应用,默认想实现某一个路由组件,或者当我们进入 某一级路由组件的时候,想默认显示其中某一个子路由组件,我们可以配置默认路由

(如:进入页面后,默认显示的是首页的内容)

// 设置默认路由
			{
				path:'',
				component:Main
			}

当我们需要进入之后进行重定向到其他路由的时候,或者当url与路由表不匹配的时候,页面可能会出现404,我们可以设置一个重定向页面
(网址栏随便添加内容,网页不识别,可以默认跳到一个存在的页面中)

// 如果url地址栏 访问/ 就切换到 /main路由中
			
	{
		path:'/',
		redirect:'/main'
	}
	
	// 如果上面的这些path都没有匹配上,会切换到/main路由中
	{
		path:'*',
		redirect:'/main'
	},

五. 路由的命名

我们可以给路由对象配置name属性,这样的话 我们在跳转的时候,直接写name:main就会快速的找到此nam属性对应的路由了,不需要写大量的url path路径了

index.js 的路由表中配置name;

{
path:"guonei",
	component:Guonei,
	// 给 path进行命名,后续可以通过这个名字找到它
	name:"guonei"
},
{
	path:"guoji",
	component:Guoji,
	// 给此path命名为guoji
	name:"guoji"
}

动态路由

路由传参的参数主要有两种:路由参数、queryString参数

1. 路由参数

(1) 路由表里配置:

{
// 配置接收内容的额参数(id)
	path:'/detail/:id',
	component:Detail
}

上述代码就是给Detail路由配置了接收的参数id,(多个参数可以继续在后面设置)

(2) 跳转时传参

<router-link to="/detail/1">文章一</router-link>
<router-link to="/detail/2">文章二</router-link>
			

(3) detail组件中调用参数

<template>
   <div>
     详情页面 --- {{$route.params.id}}
  </div>
</template>

prop将路由与组件解耦

在组件中接收路由参数需要 this.$route.params.id,代码冗余;现在可以在路由表里配置props:true

{
path:‘detail/:id’,
component:Detail,
name:‘detail’,
props:true
}

配置成功后,路由自己中可以通过props接收id参数去使用了

<script>
	export default {
	  props:["id"],
	}
</script>
	
// 模板中调用
<template>
  <div>
    详情页面  ---{{id}}
  </div>
</template>
2. querySting参数

querySting参数不需要在路由表设置接收,直接设置在 ‘?’ 后面的内容里即可,在路由组件中通过this.$route.query接收
(1) 传参

<router-link to="/detail/2?title=文章1">文章一</router-link>
<router-link to="/detail/2?title=文章2">文章二</router-link>

(2) detail组件中调用

<template>
  <div>
     详情页面 --- {{$route.query.title}}
   </div>
</template>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值