vue router的使用_vue路由的相关知识

更新日期: 2018-05-22 阅读: 4.6k 标签: router

1. 简介

路由,工作原理与路由器相似(路由器将网线总线的IP分发到每一台设备上),vue中的路由根据用户在网页中的点击,将其引导到对应的页面。


2. 使用步骤

安装vue-router或者直接引入vue-router.js(下载地址:https://router.vuejs.org/

例:SPA页面(Single Page Application,将一个网站的所有页面写在一个文件,通过不同的div进行区分,再通过div的显示、隐藏实现跳转效果)

  • 定义组件对象(页面)、组件模板、注册组件
  • 定义router-link、router-view
    • router-link:组件会被解析为a标签
    • router-view:路由显示的内容会在 router-view 中显示
  • 定义路由规则
  • 注册到根组件中
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript" src="vue.js"></script>    
    <script type="text/javascript" src="vue-router.js"></script>
</head>
<body>
    <div id="app">
        <!-- 4. 定义router-link、router-view -->
        <div>
            <router-link to='/home'>首页</router-link>
            <router-link to='/setting'>设置</router-link>
            <router-view></router-view>
        </div>        
    </div>
    <!-- 2. 定义组件模板 -->
    <template id="home">
        <div>
            <h3>首页页面</h3>
        </div>
    </template>
    <template id="setting">
        <div>
            <h3>设置页面</h3>
        </div>
    </template>
    <script type="text/javascript">
        //1. 定义组件对象
        let Home = {template:'#home'}
        let Setting = {template:'#setting'}
        //5. 定义路由规则
        let route = new VueRouter({
            routes:[
                {
                    path:'/home',
                    component:Home
                },
                {
                    path:'/setting',
                    component:Setting
                }
            ]        
        })
        let app = new Vue({
            el:"#app",
            //3. 注册到根组件中
            components:{
                Home,
                Setting
            },
            //6. 注册到根组件中
            router:route
        })            
    </script>
</body>
</html>


3. 嵌套路由

实际开发时,一个页面常会嵌套多个组件(页面),如:设置页面中包括个人设置、系统设置等

  • 定义组件对象、组件模板、注册组件
  • 定义router-link、router-view
    • 嵌套的路由,router-link、router-view 定义在嵌套的地方
  • 定义路由规则
    • 嵌套的路由,通过 children 属性定义
<div id="app">
        <!-- 4. 定义router-link、router-view -->
        <div>
            <router-link to='/home'>首页</router-link>
            <router-link to='/setting'>设置</router-link>
            <router-view></router-view>
        </div>        
    </div>
    <!-- 2. 定义组件模板 -->
    <template id="home">
        <div>
            <h3>首页页面</h3>
        </div>
    </template>
    <template id="setting">
        <div>
            <h3>设置页面</h3>
            <router-link to="/setting/user">个人设置</router-link>
            <router-link to="/setting/system">系统设置</router-link>
            <router-view></router-view>
        </div>
    </template>
    <template id="user">
        <div>
            <h3>个人设置页面</h3>
        </div>
    </template>
    <template id="system">
        <div>
            <h3>系统设置页面</h3>
        </div>
    </template>
    <script type="text/javascript">
        //1. 定义组件对象
        let Home = {template:'#home'}
        let Setting = {template:'#setting'}
        let User = {template:'#user'}
        let System = {template:'#system'}
        //5. 定义路由规则
        let route = new VueRouter({
            routes:[
                {
                    path:'/home',
                    component:Home
                },
                {
                    path:'/setting',
                    component:Setting,
                    children:[
                        {
                            path:'/setting/user',
                            component:User
                        },
                        {
                            path:'/setting/system',
                            component:System
                        }
                    ]
                }
            ]        
        })
        let app = new Vue({
            el:"#app",
            //3. 注册到根组件中
            components:{
                Home,
                Setting,
                User,
                System
            },
            //6. 注册到根组件中
            router:route
        })            
    </script>


4. 动态路由

同一个路由地址,根据传递的不同参数,显示不同的内容,如:商品详情页,多个商品共用一个页面(带有动态参数)

  • 定义路由规则时,将动态参数使用 :变量 进行参数绑定
<div id="app">
        <!-- 4. 定义router-link、router-view -->
        <div>
            <router-link to='/detail/1'>手机1</router-link>
            <router-link to='/detail/2'>手机2</router-link>
            <router-view></router-view>
        </div>        
    </div>
    <!-- 2. 定义组件模板 -->
    <template id="detail">
        <div>
            <h3>商品详情页</h3>
            <p>商品id是:{{this.$route.params.id}}</p>
        </div>
    </template>
    <script type="text/javascript">
        //1. 定义组件对象
        let Detail = {template:'#detail'}
        //5. 定义路由规则
        let route = new VueRouter({
            routes:[
                {
                    //说明:该处为动态参数,通过this.$route.params.id获取
                    path:'/detail/:id',
                    component:Detail
                }
            ]        
        })
        let app = new Vue({
            el:"#app",
            //3. 注册到根组件中
            components:{
                Detail
            },
            //6. 注册到根组件中
            router:route
        })            
    </script>


5、编程式路由

编程式路由,通过js代码实现页面跳转,类似 js 代码 window.location 实现页面跳转

<div id="app">
        <div>
            <button @click="show">查看手机2商品详情</button><br>
            <router-link to='/detail/1'>手机1</router-link>
            <router-link to='/detail/2'>手机2</router-link>
            <router-view></router-view>
        </div>        
    </div>
    <template id="detail">
        <div>
            <h3>商品详情页</h3>
            <p>商品id是:{{this.$route.params.id}}</p>
        </div>
    </template>
    <script type="text/javascript">
        let Detail = {template:'#detail'}
        let route = new VueRouter({
            routes:[
                {
                    path:'/detail/:id',
                    component:Detail
                }
            ]        
        })
        let app = new Vue({
            el:"#app",
            components:{
                Detail
            },
            router:route,
            methods:{
                show(){
                    this.$router.push({path:'/detail/2'})
                }
            }
        })            
    </script>


6、路由重定向

重定向,当访问一个路由地址时,自动跳转至其他的路由地。例:当打开路由页面时,不显示任何内容(默认无匹配的路由规则)

修改代码(在routes中添加红色部分的内容) 

routes:[
     {
          path:'/home',
          component:Home
      },
     {
         path:'/',
         redirect:'/home',
         component:Home
      },
     {……}
]

直接打开当前页面时,自动跳转到/home页面(重定向) 


原文来源:https://www.cnblogs.com/writerW/archive/2018/05/21/9069102.html 

 




本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/797

React Router 5 发布,更好地支持 React 16

关于 React Router v5 有一个小插曲,其实开发团队原本只是计划发布 React Router 4.4 版本,但由于错误地使用了托字符 (^) —— 将依赖错误地写成 react-router: ^4.3.1,导致报错。最后团队决定撤销 4.4 版本,直接改为发布 React Router v5。

移动端底部导航固定配合vue-router实现组件切换

在我们平时练习或者实际项目中也好,我们常常遇到这么一个需求:移动端中的导航并不是在顶部也不是在底部,而是在最底部且是固定的,当我们点击该导航项时会切换到对应的组件

React Rouer 使用教程

作为 React 全家桶的一员,如果我们想要开发一个 React 应用,那么 react-router 基本上是我们绕不过去的基础。基于此,对它的了解和使用也是必不可少的一步,本文将重点介绍实际应用中常用的一些 API 以及实践过程中遇到的一些问题

简单实现一个vue-router

Vue Router 是 Vue.js 官方的路由管理器。在早期的时候html模板存在服务端,然后根据浏览器输入不同的路径,服务端会根据不同的路径渲染不同的模板出来,这样的痛点就是用户每次操作的时候都要重新刷新页面

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!