【Vue框架】Vue2中Vue.js路由—路由介绍、路由控制组件切换、路由重定向、路由传参、嵌套路由、路由布局(附源码详解)

这篇具有很好参考价值的文章主要介绍了【Vue框架】Vue2中Vue.js路由—路由介绍、路由控制组件切换、路由重定向、路由传参、嵌套路由、路由布局(附源码详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.1 什么是路由?

Vue Router官方文档:https://router.vuejs.org/zh/installation.html
【Vue框架】Vue2中Vue.js路由—路由介绍、路由控制组件切换、路由重定向、路由传参、嵌套路由、路由布局(附源码详解)

  • 使用路由文件:
    • 1.引用vue-router路由js文件
    • 2.创建router对象
    • 3.在vm对象中注册router对象
    • 4.在视图中使用 router-view 标签
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
		<!-- 
			一、使用路由文件:
				1.引用vue-router路由js文件
				2.创建router对象 
				3.在vm对象中注册router对象
				4.在视图中使用 router-view 标签
		 -->
		 <router-view></router-view>
    </div>

    <script src="../js/vue.js"></script>
	<script src="../js/vue-router.js"></script>
	
    <script>
		var login = {
			template:'<h1>登录组件</h1>'
		}
		
		var register = {
			template:'<h1>注册组件</h1>'
		}
		
		// 创建 router对象
		var router = new VueRouter({
			routes:[
				{path:'/login', component:login},
				{path:'/abc', component:register},
			]
		});
		
        var vm = new Vue({
            el: '#app',
            data: {

            },
            methods: {

            },
			components:{
				
			},
			router
        })
    </script>
</body>
</html>

1.2 路由控制组件切换

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
	<style>
		.router-link-active{color: red;}
	</style>
</head>

<body>
    <div id="app">
		<!-- 写法一 -->
		<!-- <a href="#/login">登录</a> -->
		<!-- <a href="#/abc">注册</a> -->
		
		<!-- 写法二 
			router-link默认渲染成a标签
			如果需要改成其他标签,使用属性tag
			点击那个标签会添加样式类router-link-active,可以修改并增加样式
		-->
		<router-link to="/login" tag="tag">登录</router-link>
		<router-link to="/abc">注册</router-link>
		
		<router-view></router-view>
    </div>

    <script src="../js/vue.js"></script>
	<script src="../js/vue-router.js"></script>
	
    <script>
		// 1.定义组件
		var login = {
			template:'<h1>登录组件</h1>'
		}
		
		var register = {
			template:'<h1>注册组件</h1>'
		}
		
		// 2.创建 router对象
		var router = new VueRouter({
			routes:[
				{path:'/login', component:login},
				{path:'/abc', component:register},
			]
		});
		
        var vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
            },
			components:{
			},
			router
        })
    </script>
</body>
</html>

1.3 路由重定向以及动画路由

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
	<style>
		.router-link-active{color: red;}
		.v-enter,
		.v-leave-to{
			opacity: 0;
			transform: translateX(200px);
		}
		
		.v-enter-active,
		.v-leave-active{
			transition: all 1s ease;
		}
	</style>
</head>

<body>
    <div id="app">
		<!-- 写法一 -->
		<!-- <a href="#/login">登录</a> -->
		<!-- <a href="#/abc">注册</a> -->
		
		<!-- 写法二 
			router-link默认渲染成a标签
			如果需要改成其他标签,使用属性tag
			点击那个标签会添加样式类router-link-active,可以修改并增加样式
		-->
		<router-link to="/login" tag="tag">登录</router-link>
		<router-link to="/abc">注册</router-link>
		
		<transition mode="out-in">
			<router-view></router-view>
		</transition>
    </div>

    <script src="../js/vue.js"></script>
	<script src="../js/vue-router.js"></script>
	
    <script>
		// 1.定义组件
		var login = {
			template:'<h1>登录组件</h1>'
		}
		
		var register = {
			template:'<h1>注册组件</h1>'
		}
		
		// 2.创建 router对象
		var router = new VueRouter({
			routes:[
				{path:'/', redirect:'/login'},
				{path:'/login', component:login},
				{path:'/abc', component:register},
			]
		});
		
        var vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
            },
			components:{
			},
			router
        })
    </script>
</body>
</html>

1.4 路由传参

  • 第一种传参形式——路由路径进行传参,如:/login?id=20
  • 第二种传参形式——路由占位符进行传参,如:/abc/100
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
	<style>
		.router-link-active{color: red;}
		.v-enter,
		.v-leave-to{
			opacity: 0;
			transform: translateX(200px);
		}
		
		.v-enter-active,
		.v-leave-active{
			transition: all 1s ease;
		}
		
	</style>
</head>

<body>
    <div id="app">
		<!-- 写法一 -->
		<!-- <a href="#/login">登录</a> -->
		<!-- <a href="#/abc">注册</a> -->
		
		<!-- 写法二 
			router-link默认渲染成a标签
			如果需要改成其他标签,使用属性tag
			点击那个标签会添加样式类router-link-active,可以修改并增加样式
		-->
		<router-link to="/login?id=20" tag="tag">登录</router-link>
		<router-link to="/abc/100">注册</router-link>
		
		<transition mode="out-in">
			<router-view></router-view>
		</transition>

    </div>

    <script src="../js/vue.js"></script>
	<script src="../js/vue-router.js"></script>
	
    <script>
		// 1.定义组件
		var login = {
			template:'<h1>登录组件=={{id}}</h1>',
			data(){
				return{
					id:''
				}
			},
			created(){
				console.log(this.$route.query.id);
				this.id = this.$route.query.id;
			}
		}
		
		var register = {
			template:'<h1>注册组件=={{id}}</h1>',
			data(){
				return{
					id:''
				}
			},
			created(){
				console.log(this.$route.params.id);
				this.id = this.$route.params.id;
			}
		}
		
		// 2.创建 router对象
		var router = new VueRouter({
			routes:[
				{path:'/', redirect:'/login'},
				{path:'/login', component:login},
				{path:'/abc/:id', component:register},
			]
		});
		
        var vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
            },
			components:{
			},
			router
        })
    </script>
</body>
</html>

1.5 嵌套路由

嵌套路由的应用场景:每个网站中的首部与网站的底部一般不会改变,变化的内容一般在中间部分。
【Vue框架】Vue2中Vue.js路由—路由介绍、路由控制组件切换、路由重定向、路由传参、嵌套路由、路由布局(附源码详解)

1.5.1 非嵌套路由案例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
		<router-link to="/user">用户</router-link>
		<router-view></router-view>
    </div>
	
	<!-- 用户组件视图 -->
	<template id="temp">
		<div>
			<h1>User组件</h1>
			<router-link to="/login">登录</router-link>
			<router-link to="/register">注册</router-link>
		</div>
	</template>

    <script src="../js/vue.js"></script>
	<script src="../js/vue-router.js"></script>
	
    <script>
		// 1.定义用户组件、登录组件、注册组件
		var user = {
			template:'#temp'
		}
		
		var login = {
			template:'<h1>登录组件</h1>'
		}
		
		var register = {
			template:'<h1>注册组件</h1>'
		}
		
		// 2.创建 router对象
		var router = new VueRouter({
			routes:[
				{path:'/user',component:user},
				{path:'/login',component:login},
				{path:'/register',component:register},
			]
		});
		
        var vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
            },
			components:{
			},
			router
        })
    </script>
</body>
</html>

1.5.2 嵌套路由案例

【Vue框架】Vue2中Vue.js路由—路由介绍、路由控制组件切换、路由重定向、路由传参、嵌套路由、路由布局(附源码详解)文章来源地址https://www.toymoban.com/news/detail-400559.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app">
		<router-link to="/user">用户</router-link>
		<router-view></router-view>
    </div>
	
	<!-- 用户组件视图 -->
	<template id="temp">
		<div>
			<h1>User组件</h1>
			<router-link to="/user/login">登录</router-link>
			<router-link to="/user/register">注册</router-link>
			<div></div>
			<div>
				<router-view></router-view>
			</div>
		</div>
	</template>

    <script src="../js/vue.js"></script>
	<script src="../js/vue-router.js"></script>
	
    <script>
		// 1.定义用户组件、登录组件、注册组件
		var user = {
			template:'#temp'
		}
		
		var login = {
			template:'<h1>登录组件</h1>'
		}
		
		var register = {
			template:'<h1>注册组件</h1>'
		}
		
		// 2.创建 router对象
		var router = new VueRouter({
			routes:[
				{
					path:'/user',
					component:user, 
					// 注意子路由children下的路由写法
					children:[
						{path:'login',component:login},
						{path:'register',component:register}
					],
				},

			]
		});
		
        var vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
            },
			components:{
			},
			router
        })
    </script>
</body>
</html>

1.6 路由布局

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
	<!-- 
		在一个页面显示多个组件
		default:header 对应的 router-view 可以不写name属性
	 -->
    <div id="app">
		<router-view></router-view>
		<router-view name="content"></router-view>
		<router-view name="footer"></router-view>
    </div>
	

    <script src="../js/vue.js"></script>
	<script src="../js/vue-router.js"></script>
	
    <script>
		// 1.定义
		var header = {
			template:'<h1>头部内容</h1>'
		}
		
		var content = {
			template:'<h1>内容内容</h1>'
		}
		
		var footer = {
			template:'<h1>脚部内容</h1>'
		}
		
		
		// 2.创建 router对象
		var router = new VueRouter({
			routes:[
				{path:'/', components:{
					default:header,
					'content':content,
					'footer':footer
				}},
			]
		});
		
        var vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
            },
			components:{
			},
			router
        })
    </script>
</body>
</html>

到了这里,关于【Vue框架】Vue2中Vue.js路由—路由介绍、路由控制组件切换、路由重定向、路由传参、嵌套路由、路由布局(附源码详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2和Vue3是Vue.js框架的两个主要版本,它们之间有以下区别

    性能优化:Vue3在内部进行了重写,采用了更高效的虚拟DOM算法,使得渲染速度更快,性能更好。 更小的体积:Vue3的体积比Vue2更小,这意味着更快的下载和加载速度。 Composition API:Vue3引入了Composition API,它是一种新的组合式API,可以更好地组织和重用组件逻辑,使得代码更

    2024年02月15日
    浏览(48)
  • 基于vscode实现vue3项目创建启动+安装配置路由vue-router实现单页面组件切换

    访问https://nodejs.org/en,点击下载最新版本的nodejs,并安装。 在项目目录文件下,通过cmd运行下述指令。 依次输入下列命令,启动vue项目 在浏览器中加载http://localhost:5173/,页面加载成功,说明vue项目安装启动成功。 建议安装第三方库通过vscode中的终端来操作,项目启动通过

    2024年02月03日
    浏览(84)
  • 【Vue框架】Vue2中element-ui/mint-ui组件库——element-ui引入组件以及使用案例、mint-ui引入组件及使用案例

    element-ui 提供了大量的组件,如:布局组件、表单组件、JS组件等等。 Element-ui官网: https://element.eleme.cn/#/zh-CN 安装 Element-ui: npm i element-ui -S 1.1.1 引入组件 引入 Element 完整引入(在 main.js 中写入以下内容): 按需引入 借助 babel-plugin-component,我们可以只引入需要的组件,以达到

    2024年02月07日
    浏览(56)
  • 若依vue框架+element ui 组件路由跳转与菜单联动

    在后台管理系统中当点击某一按钮时,页面发生跳转(路由发生跳转,跳转到与按钮对应的页面),在跳转的同时在侧边栏中打开与之对应模块的菜单项 1.点击按钮跳转到/pay/PayIndex页面 2.在后台管理系统中侧边栏使用的是element ui 中的NavMenu导航菜单组件,在后台管理系统 src/l

    2024年02月14日
    浏览(53)
  • Vue3在点击菜单切换路由时,将ElementPlus UI库中el-main组件的内容滚动恢复到顶部

    功能:Vue3在点击菜单切换路由时,将页面el-main的内容滚动到顶部,布局如下,使用UI组件库为ElementPlus  在网上搜很多都是在route.js中的router.beforeEach中使用window.scrollTop(0,0) 或 window.scrollTo(0,0) 滚动,但是我使用无效,于是使用操作dom的方法,如下 可以使用 watch 函数来  监听

    2024年01月18日
    浏览(55)
  • Vue Router系列之路由重定向

    路由重定向指的是:用户在访问地址 A 的时候,强制用户跳转到地址 C,从而展示特定的组件页面;通过路由规则的 redirect 属性,指定一个新的路由地址,可以很方便地设置路由的重定向。 如果你感觉文章不咋地 //(ㄒoㄒ)// ,就在评论处留言,作者继续改进; o_O??? 如果你觉

    2024年02月13日
    浏览(31)
  • vue2 - 详细介绍element UI中在el-select嵌套el-tree树形控件实现下拉选择树型结构数据的效果实例(组件封装)

    在项目上常用使用到 el-select 和 el-tree 组合实现,记录下两者结合的实现过程。(代码以及注释清晰明了,代码直接使用即可) 要求根据项目接口提供的数据,el-tree 里的数据是一次性返回来的,点击最后一层级时,请求接口,在点击层级下方追加数据追加的数据要显示勾

    2024年04月15日
    浏览(67)
  • Taro + vue3 + js + nutUI 框架中自定义tabbar的组件封装以及页面跳转的逻辑

    1.需求:   在H5 中需要封装一个自定义的tabbar 菜单跳转 通过nut-ui 进行二次封装 2. 注意点   H5 中原生的tabbar 在ios 中会出现问题 所以进行 封装tabbar 3. 代码操作 首先全部的代码  4.解析 tabList: 菜单的内容数组  根据自己菜单的数量 来决定 const tabList = reactivemenu[]([     {    

    2024年04月17日
    浏览(53)
  • vue2自定义切换主题 dark暗黑主题(暗黑模式)

    业务要求要做一个主题色切换,类似于暗黑模式,以前没有做过于是在网络上搜罗现成的解决方案,由于是vue2的项目,找了很久都没有找到一个好的方便的解决方案,最后在github找到一个使用css3的解决方案,觉得十分不错,也很简单明了,于是就拿来直接用了,参考的gith

    2024年02月15日
    浏览(43)
  • vue2组件库-上传组件

    核心思路: 监控整个上传的流程 上传成功 上传失败 类型:拖拽 多个文件上传 跟上传强关联的属性,上传必备的字段 name: 提交的那个formData字段名 action:ajax接口路径 limit:限制提交个数 钩子函数 dom: this.$refs 选中文件 上传 按照整个上传的流程 fileList中每个对象的状态

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包