vue-router

时间:2025-04-08 10:56:18

概念:

  • 什么是路由
    根据不同的url 加载不同的 vue 组件
  • 什么是路由规则
    在浏览器上看到的 #/xxx 就是路由规则
  • 路由规则的几种表现形式
    无参路由规则:

    • /Home
    • /Home/news

    有参路由规则

    • /Home/news/:id -> 传递 id 值
    • 如: /Home/news/15

使用:

注意:这个步骤是 +
1. 安装 cnpm install vue-router --save
2. 在项目的入口js文件中 中导入 vue-router
import VueRouter from 'vue-router'
3. 在 中导入 Vue 对象并且利用 Vue 对象 .use(vueRouter);

import Vue from 'vue'
(VueRouter)

4 配置路由规则

var router = new VueRouter({
    routes:[
        { 
            name: '路由规则名称,必须写',
            path: '路由规则的表现形式',
            component: '具体的一个 vue 组件' 
        },
        // 例如:
        { 
            name: 'Login',
            path: '/Account/Login',
            component: Login // 这里 Login组件 一定通过 import Login from '路径' 导入 
        }
    ]
});

5 要在实例化Vue对象的时候使用第4步中定义好的 routers 路由规则对象

    new Vue( {
        el: '#app',
        router,
        render:create=>create(App)
    });

6 注意点:
<router-view></router-view>

router-view 是一个占位符,会根据当前的路由规则将其对于的.vue 中文件内容替换到这个位置

生成超链接:

生成超链接, 建议使用 vue-router 提供的方式,router-link。
不建议自己编写 a 标签去设定 href


vue-router实例

<template>
    <div class="tmpl">
        <!-- 官方不建议直接这么写死,建议用 router-link -->
        <!--<a href="#/Account/Login">登录</a>
        <a href="#/Account/Register">注册</a>-->

        <router-link to='/Account/Login'>登录</router-link>
        <router-link to='/Account/Register'>注册</router-link>

        <!-- 通过 router-view 来将组件渲染出来 -->
        <router-view></router-view>
    </div>
</template>

<script>
    export default{
        data() {
            return {}
        }
    }
</script>

Login Register 就是普通的两个组件

// 1 导入相关包
import Vue from 'vue';
import VueRouter from 'vue-router'

// 1.1 导入相关 .vue 组件
import App from './'
import Login from './components/'
import Register from './components/'

// 2 在 vue 中加载 VueRouter
( VueRouter );

// 3 定义路由规则对象
let router = new VueRouter({
    routes: [
        {
            name: 'Login',
            path: '/Account/Login',
            component: Login
        },
        {
            name: 'Register',
            path: '/Account/Register',
            component: Register
        }
    ]
})

// 4 使用 router
new Vue({
    el: '#app',
    router,
    render: create=>create(App)
})

vue-router 传参写法

假设我需要传 id 为 13 过去

<router-link to='/Account/Login/13'>登录</router-link>

// 对应的修改路由
let router = new VueRouter({
    routes: [
        {
            name: 'Login',
            path: '/Account/Login/:id',
            component: Login
        }
    ]
})

我们在子组件进行接收 this.$ 这个 id 是根据路由规则 :id 来的

<template>
    <div class="tmpl">
        登录组件
        传入的id = {{ this.$ }}
    </div>
</template>

而当需要传多个参数时可以继续 /Account/Login/:id/:name

{{ this.$ }}
{{ this.$ }}