Vue应用vue-router实现路由

1、引入插件

<script src="https://cdn.staticfile.org/vue-router/2.7.0/vue-router.min.js"></script>

  或者 npm install vue-router

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

2、基础用法

应用Vue.js和vue-router可以创建简单的单页应用。使用Vue.js可以通过多个组件来组成应用程序,而vue-router的作用是将每个路径映射到对应的组件,并通过路由进行组件之间的切换。Vue.js路由允许通过不同的URL访问不同的内容,通过路由实现组件之间的切换需要使用<router-link>组件,该组件用于设置一个导航链接,通过to属性设置目标地址,从而切换不同的html内容。

<div id="element">
    <p>
        <!--使用<router-link>组件进行导航-->
        <!--通过传入to属性指定链接-->
        <!--<router-link>默认会被渲染成一个<a>标签-->
        <router-link to="/first">页面一</router-link>    
        <router-link to="/second">页面二</router-link> 
        <router-link to="/third">页面三</router-link> 
    </p>
    <!--路由出口,路由匹配到的组件渲染的位置-->
    <router-view></router-view>
</div>
<script src="http://60.205.187.0/vue/vue.js"></script>
<script src="https://cdn.staticfile.org/vue-router/2.7.0/vue-router.min.js"></script>
<script type="text/javascript">
    var first={
        template:'<div>这是页面一</div>'
    };
    var second={
        template:'<div>这是页面二</div>'
    };
    var third={
        template:'<div>这是页面三</div>'
    };
    //定义路由,每个路由应该映射一个组件。其中component可以是通过Vue.extend()创建的组件构造器,或者是一个组件选项对象
    var routes=[
        {path:'/first',component:first},
        {path:'/second',component:second},
        {path:'/third',component:third},
    ];
    //创建router实例,传入routes配置参数,还可以传入其他配置参数
    var router=new VueRouter({
        routes:routes
    })
    //创建和挂载根实例.通过router配置参数注入路由,让整个应用都有路由功能
    var app=new Vue({
        router:router
    }).$mount('#element');
</script>

3、路由动态匹配

在实际开发中,经常需要将某种模式匹配到的所有路由全部映射到同一个组件,例如,对于所有不同ID的用户,都需要使用同一个组件User来渲染。那么可以在vue-router的路由路径中使用动态路径参数来实现这个效果。示例:

<div id="element">
    <p>
        <router-link to="/user/1">ID 1</router-link>    
        <router-link to="/user/2">ID 2</router-link> 
        <router-link to="/user/3">ID 3</router-link> 
    </p>
    <!--路由出口,路由匹配到的组件渲染的位置-->
    <router-view></router-view>
</div>
<script src="http://60.205.187.0/vue/vue.js"></script>
<script src="https://cdn.staticfile.org/vue-router/2.7.0/vue-router.min.js"></script>
<script type="text/javascript">
 
    var User ={
        template:'<div>用户ID:{{$route.params.id}}页面</div>'
    }
 
    var router=new VueRouter({
        routes:[
            {path:'/user/:id',component:User}
        ]
    })
 
    var app=new Vue({
        router:router
    }).$mount('#element');
 
</script>

上述代码中,:id即为设置的动态路由参数。这时像/user/1,/user/2这样的路径都会映射到相同的组件。当匹配到一个路由时,参数值可以通过$route.params的方式获取,并且可以在每个组件内使用。常规路径参数只会匹配被 “/” 分割的URL片段中的字符。如果想匹配任意路劲,可以使用通配符 * 。例如,path: '*'会匹配所有路径。path : ' /user-* '会匹配以‘/user-’开头的任意路径。当使用通配符路由时,需要确保正确的路由顺序,也就是说含有通配符的路由应该放在最后。


4、嵌套路由

有些界面通常是由多层嵌套的组件组合而成,例如,二级导航菜单就是这种情况。这时就需要使用嵌套路由。使用嵌套路由时,URL中各段动态路径会按某种结构对应嵌套的各层组件。 

<router-view>是最顶层的出口,用于渲染最高级路由匹配到的组件。同样,一个被渲染的组件的模板中同样可以包含嵌套的<router-view>,要在嵌套的出口中渲染组件,需要在VueRouter中使用children参数进行配置。示例:

<div id="element">
    <p>
        <router-link to="/user/1">用户ID 1</router-link>    
        <router-link to="/user/2">用户ID 2</router-link> 
        <router-link to="/user/3">用户ID 3</router-link> 
    </p>
    <!--路由出口,路由匹配到的组件渲染的位置-->
    <router-view></router-view>
</div>
<script src="http://60.205.187.0/vue/vue.js"></script>
<script src="https://cdn.staticfile.org/vue-router/2.7.0/vue-router.min.js"></script>
<script type="text/javascript">
 
    var User ={
        template:`<div>
                      <p>用户ID:{{$route.params.id}}页面 </p>
                      <router-link to="/user/1/sex">性别</router-link> 
                      <router-link to="/user/1/age">年龄</router-link> 
                      <router-view></router-view>
                  </div>`
    }
    
    var UserSex ={
        template:`<div>
                      <p>用户ID:{{$route.params.id}}性别页面 </p>
                  </div>`
    }
    
    var UserAge ={
        template:`<div>
                      <p>用户ID:{{$route.params.id}}年龄页面 </p>
                  </div>`
    }
 
    var router=new VueRouter({
        routes:[
            {
                path:'/user/:id',
                component:User,
                children:[
                    {
                    path:'sex',
                    component: UserSex
                    },
                    {
                    path:'age',
                    component: UserAge
                    }
                ]
            }
        ]
    })
 
    var app=new Vue({
        router:router
    }).$mount('#element');
 
</script>

5、命名路由

在进行路由跳转的时候,可以为较长的路径设置一个别名。在创建VueRouter实例的时候,在routes配置中可以为某个路由设置名称。实例:

    var router=new VueRouter({
        routes:[
            {
                path:'/user/:id',
                name:'user',
                component:User
            }
        ]
    })

 在设置了路由的名称之后,要想连接到该路径,可以为router-link的to属性传入一个对象。代码如下:

<router-link :to="{{ name:'user',params:{ id:1 } }}"></router-link>

6、应用push()方法定义导航

使用<router-link>创建<a>标签可以定义导航链接。除此之外,还可以使用router的实例方法push()实现导航的功能。在Vue实例内部可以通过$router访问路由实例,因此通过调用this.$router.push即可实现页面的跳转。

该方法的参数可以是一个字符串路径,或者是一个描述地址的路径。示例:
    //跳转到字符串表示的路径
    this.$router.push('home')
    //跳转到指定路径
    this.$router.push({path:'home'})
    //跳转到指定命名的路由
    this.$router.push({name:'home'})
    //跳转到指定路径并带有查询参数
    this.$router.push({path:'home',query:{id:'1'}})
    //跳转到指定路由并带有查询参数
    this.$router.push({name:'user',params:{id:'1'}})

 7、命名视图

有些页面布局分为顶部、左侧导航和主内容3个部分,这种情况下需要将每个部分定义为一个视图。为了在界面中展示多个视图,需要为每个视图(router-view)进行命名,通过名字进行对组件的渲染。在界面中可以有单独命名的视图,而不是只有一个单独的出口。如果没有为router-view设置名称,那么它的名称默认为default。例如,为界面设置多视图的代码如下:

<div id="element">
    <ul>
        <li>
            <router-link to="/one">界面一</router-link>
        </li>
        <li>
            <router-link to="/two">界面二</router-link>
        </li>
    </ul>
    <router-view class="left" name="left"></router-view>
    <router-view class="main" name="main"></router-view>
</div>
 
<script src="http://60.205.187.0/vue/vue.js"></script>
<script src="https://cdn.staticfile.org/vue-router/2.7.0/vue-router.min.js"></script>
<script type="text/javascript">
 
    var LeftOne = {
        template: '<div>左侧导航栏一</div>'
    };
    var MainOne = {
        template: '<div>主内容一</div>'
    };
    var LeftTwo = {
        template: '<div>左侧导航栏二</div>'
    };
    var MainTwo = {
        template: '<div>主内容二</div>'
    };
 
    var router = new VueRouter({
        routes: [
            {
                path: '/one',
                components: {
                    left: LeftOne,
                    main: MainOne
                }
            },
            {
                path: '/two',
                components: {
                    left: LeftTwo,
                    main: MainTwo
                }
            }
        ]
    })
 
    //创建根实例
    var demo = new Vue({
        el: '#element',
        router
    })
</script>

8、重定向 

如果要为访问的路径设置了重定向规则,则访问该路径时会被重定向到指定的路径。例如:设置路径从/a重定向到/b的代码如下:

    //重定向路径
    var router = new VueRouter({
        routes:
            [
                { path: '/a', redirect: '/b' }
            ]
    })
 
    //重定向命名路由
    var router = new VueRouter({
        routes:
            [
                { path: '/a', redirect: { name: 'XXX' } }
            ]
    })

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 3中,使用Vue Router进行路由拆分可以帮助你更好地组织和管理你的路由配置。以下是一些步骤来实现路由拆分: 1. 安装Vue Router:首先,确保你的项目中已经安装了Vue Router。可以通过以下命令进行安装: ``` npm install vue-router@next ``` 2. 创建路由模块:创建一个新的模块来定义和配置你的路由。可以创建一个名为`router.js`的文件,并在其中导入VueVue Router: ```javascript import { createRouter, createWebHistory } from 'vue-router'; const routes = [ // 定义你的路由配置 ]; const router = createRouter({ history: createWebHistory(), routes, }); export default router; ``` 3. 定义路由配置:在路由模块中,通过`routes`数组来定义你的路由配置。每个路由对象应该包含一个`path`属性和一个`component`属性,分别指定路由路径和对应的组件。 ```javascript import Home from './components/Home.vue'; import About from './components/About.vue'; const routes = [ { path: '/', component: Home, }, { path: '/about', component: About, }, // 更多路由配置... ]; ``` 4. 在主应用程序中使用路由:在你的主应用程序中,导入并使用创建的路由实例。你可以在`main.js`文件中完成这个步骤: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; const app = createApp(App); app.use(router); app.mount('#app'); ``` 现在,你已经成功拆分了你的路由配置。你可以在每个组件中使用`<router-link>`和`<router-view>`来进行导航和渲染路由组件。 注意:以上只是一个简单的示例,你可以根据你的项目需求进行更复杂的路由配置和组织方式。不过,以上步骤应该可以帮助你开始使用Vue Router进行路由拆分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永yuan的one

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值