前言

今天把自己的项目布局完成了,但是想在项目启动的时候默认跳转到登录页面。

这其实需要借助路由实现跳转

开始编写之前,大家可以看下我的布局:

Vue项目启动后跳转到制定路由页面

Vue项目启动后跳转到制定路由页面

安装并使用路由

关于如何安装并使用路由,可以参考:Vue安装并使用路由和路由器

编写路由规则

需要对index.js进行修改,根据需求配置需要跳转的那个组件的路由,我的需求已经很明确了,就是登录的组件。

引入需要的组件

// 引入登录组件
import Login from '../pages/Login.vue'

配置路由

然后配置login组件的路由

   // 登录组件路由
        {
            path: '/login',
            component: Login,
            name: "Login"
        },

配置完login组件路由后,还要继续配置路由默认跳转

  // 路由默认跳转
        {
            path: '/', // 如果路由为/
            redirect: '/login' //重定向到登录组件
        },

Vue项目启动后跳转到制定路由页面
完整代码如下:

// 该文件专门用于创建整个应用的路由器
// 引入路由器
import VueRouter from 'vue-router'
// 引入登录组件
import Login from '../pages/Login.vue'
// 引入用户组件
import User from '../pages/User.vue'
// 引入代办组件
import Todo from '../pages/Todo.vue'
// 引入内容区组件
import Main from '../components/Main.vue'
// 引入首页组件
import Home from '../pages/Home.vue'
// 创建并且暴露文件一个路由器
export default new VueRouter({
    // 配置路由 本质是一个数组,在里面配置多组路由,每一个路由都是一个key和value映射对象
    routes: [
        // 路由默认跳转
        {
            path: '/', // 如果路由为/
            //path: '*', // 如果路由为*
            redirect: '/login' //重定向到登录组件
        },
        // 登录组件路由
        {
            path: '/login',
            component: Login,
            name: "Login"
        },
        {
            path: '/main', 
            // 如果输入的是路由地址是main,就重定向到/main/user,也就是user组件中
            redirect: '/main/user',
            name: "Main",
            component: Main,
            // main路由下的子路由,菜单都可以写在main的子路由下
            children: [
                // 用户组件路由
                {
                    path: 'user',  // children里面的path不需要加杠了,底层遍历的时候会自动加入
                    component: User,
                    name: "User"
                },
                // 待办组件路由
                {
                    path: 'todo',
                    component: Todo,
                    name: "Todo"
                },
                // 主页组件路由
                {
                    path: 'home',
                    component: Home,
                    name: "Home"
                },
            ]
        },
    ]
})

测试

这时候在浏览器输入项目的访问地址:

比如我的是:http://localhost:8081,就会默认把地址换成
http://localhost:8081/#/login,从而实现跳转到login页面。

这样就实现了Vue项目启动后实现跳转制定路由页面的功能

Vue项目启动后跳转到制定路由页面
同时也可以手动更换别的路由,比如:

Vue项目启动后跳转到制定路由页面

但是如果乱输入路由,是不能跳转的:

Vue项目启动后跳转到制定路由页面

这种情况我们可以使用*来代替/

*:不管路由是什么,都会重定向到/login,比/的适配性更强

Vue项目启动后跳转到制定路由页面

再来测试下。还是随便输入一堆东西:

Vue项目启动后跳转到制定路由页面

按下回车,默认跳到/login的路由:

Vue项目启动后跳转到制定路由页面

如果使用了"*" ,就不能通过手动输入路由的方式进行手动切换路由了,有时候不利于调试。根据自己的需求灵活选择即可。

通过js代码实现路由跳转

最后再插点题外话,如果想要实现js代码的方式实现路由跳转,可以这么写:

push(‘xxx’) xxx=想要跳转的路由路径

this.$router.push('/main/home')

完整代码为:

我这个登录页面只是测试,login按钮也是一个假的登录,没有做逻辑处理,这是为了演示最基本的路由跳转。

<template>
    <div>
       <el-button type="primary" @click="login">登录</el-button>
    </div>
</template>
<script>
import router from '@/router';
export default {
  name: "Login",
  methods:{
    // 登录
    login(){
      this.$message({
        showClose: true,
        message: '登录成功!',
        type: 'success',
        duration:2000,
        center:true
      });
      this.$router.push('/main/home')
    }
  }
};
</script>
<style>
</style>

点击登录:

Vue项目启动后跳转到制定路由页面

成功跳转到其他路由!

Vue项目启动后跳转到制定路由页面

发表回复