Vue路由(router)

基本路由使用:

# 显示路由组件标签
<router-view></router-view>

<script>


// 定义登录组件
const login={
    template:`<div><h3>用户登录</h3></div>`
};


// 定义注册组件
const reg={
    template:`<div><h3>用户注册</h3></div>`
};

// 定义404组件
const notFound={
    template:`<div><h3>404 not found!</h3></div>`
};


// 创建路由规则对象
const router=new VueRouter({
    routes:[
        {path:"/", redirect:"/login"},    // 根路由,使用redirect重定向到login路由
        {path:"/login", component:login},
        {path:"/reg", component:reg},
        {path:"*", component:notFound}   // 这个路由必须放在路由规则最后面
    ]
});

const app=new Vue({
    el:"#app",
    data:{},
    ...
    router    //  router:router  注册路由
})



</script>

路由接口:

路径切换路由:根据请求路径切换显示不同组件

// 方式一 直接通过a标签进行切换路由连接
<a href="#/login">用户登录</a>   // #/ 哈希路由
<a href="#/reg">用户注册</a>


// 方式二 通过路由标签进行切换路由连接  标签必须加入to属性  to="路由路径"
<router-link to="/login">用户登录</router-link>
<router-link to="/reg">用户注册</router-link>


// 方式三 通过路由标签进行切换路由连接  传入路由对象
<router-link :to="{path:'/login'}">用户登录</router-link>    // v-bind 使用vue语法
<router-link :to="{path:'/reg'}">用户注册</router-link>

名称切换路由:根据路由对象名称切换路由显示不同组件 

注意:根据名称切换路由只能用router-link

//  通过名称切换路由  传入路由对象  推荐使用
<router-link :to="{name:'Login'}">用户登录</router-link>    // v-bind 使用vue语法
<router-link :to="{name:'Register'}">用户注册</router-link>

# 显示路由组件标签
<router-view></router-view>

<script>


// 定义登录组件
const login={
    template:`<div><h3>用户登录</h3></div>`
};


// 定义注册组件
const reg={
    template:`<div><h3>用户注册</h3></div>`
};

// 定义404组件
const notFound={
    template:`<div><h3>404 not found!</h3></div>`
};


// 创建路由规则对象
const router=new VueRouter({
    routes:[
        {path:"/", redirect:"/login"},    // 根路由,使用redirect重定向到login路由
        {path:"/login", component:login, name:"Login"},  // name:这个属性代表路由对象名称 用来给路由对象一个唯一标识
        {path:"/reg", component:reg, name:"Register"},
        {path:"*", component:notFound}   // 这个路由必须放在路由规则最后面
    ]
});

const app=new Vue({
    el:"#app",
    data:{},
    ...
    router    //  router:router  注册路由
})



</script>

js代码中切换路由:

点击某一个按钮后,实现业务逻辑后,跳转到指定路由

# 显示路由组件标签
<router-view></router-view>

<button @click="login">用户登录</button>

<script>


// 定义登录组件
const login={
    template:`<div><h3>用户登录</h3></div>`
};


// 定义注册组件
const reg={
    template:`<div><h3>用户注册</h3></div>`
};

// 定义404组件
const notFound={
    template:`<div><h3>404 not found!</h3></div>`
};


// 创建路由规则对象
const router=new VueRouter({
    routes:[
        {path:"/", redirect:"/login"},    // 根路由,使用redirect重定向到login路由
        {path:"/login", component:login, name:"Login"},  // name:这个属性代表路由对象名称 用来给路由对象一个唯一标识
        {path:"/reg", component:reg, name:"Register"},  // 当前路由路径指向哪里,哪里就是当前路由对象
        {path:"*", component:notFound}   // 这个路由必须放在路由规则最后面
    ]
});

const app=new Vue({
    el:"#app",
    data:{},
    methods:{
        login(){
            // 发送axios请求完成登录 响应回来之后切换路由到主页
            //this.$route object 当前路由对象 
            // this.$router vueRouter 代表路由器管理对象
             
            // this.$router.push('/login') // 路径切换
            // this.$router.push({path:"/login"}) // 路径切换
            this.$router.push({name:"Login"}) //使用名称切换 推荐(路径经常变动)
        }
    }
    ...
    router    //  router:router  注册路由
})



</script>

路由参数传递:

queryString方式传参:this.$route.query.key

//  通过名称切换路由  传入路由对象  推荐使用
<a to="#/login?name=xiaohua&pwd=222">用户登录</a>    //

//<router-link :to={path:"/login?name=xiaohua&pwd=222"}>用户登录</router-link>    //
//<router-link :to={path:"/login", query:{name:"xiaohua", pwd=222}}>用户登录</router-link>    //
//<router-link :to={name:"Login", query:{name:"xiaohua", pwd=222}>用户登录</router-link>    // 推荐

# 显示路由组件标签
<router-view></router-view>

<script>


// 定义登录组件
const login={
    template:`<div><h3>用户登录</h3></div>`
    created(){  // 生命周期中获取
        //this.$route  获取当前路由对象
        console.log( this.$route.query.name )  // 获取name参数
        console.log( this.$route.query.pwd)  
    }
};


// 定义注册组件
const reg={
    template:`<div><h3>用户注册</h3></div>`
};



// 创建路由规则对象
const router=new VueRouter({
    routes:[
        {path:"/login", component:login, name:"Login"},  
        {path:"/reg", component:reg, name:"Register"},
    ]
});

const app=new Vue({
    el:"#app",
    data:{},
    ...
    router    //  router:router  注册路由
})



</script>

restful 路径传递参数(/xxx/xx):this.$route.params.key

//  通过名称切换路由  传入路由对象  推荐使用
<a to="#/login/01/xiaohua">用户登录</a>    //


//<router-link :to={name:"Login", params:{id:01, name=xiaohua}>用户登录</router-link>    // 推荐

# 显示路由组件标签
<router-view></router-view>

<script>


// 定义登录组件
const login={
    template:`<div><h3>用户登录</h3></div>`
    created(){  // 生命周期中获取
        //this.$route  获取当前路由对象
        console.log( this.$route.params.name )  // 获取name参数
        console.log( this.$route.params.pwd)  
    }
};


// 定义注册组件
const reg={
    template:`<div><h3>用户注册</h3></div>`
};



// 创建路由规则对象
const router=new VueRouter({
    routes:[
        {path:"/login", component:login, name:"Login"},  
        {path:"/reg", component:reg, name:"Register"},
    ]
});

const app=new Vue({
    el:"#app",
    data:{},
    ...
    router    //  router:router  注册路由
})



</script>

嵌套路由:

<a href="#/users/add">添加用户信息</a>   // 访问子路由,添加用户信息

# 显示路由组件标签
<router-view></router-view>

<script>


// 定义用户组件
const users={
    template:`<div><h3>用户列表</h3><router-view></router-view></div>`   // 在父template中展示子路由标签
};


// 定义添加用户组件
const add={
    template:`<div><h3>用户添加</h3></div>`
};



// 创建路由规则对象
const router=new VueRouter({
    routes:[
        {
            path:"/users", conponent:"users", name:"users",
                children:[   // 嵌套子组件路由 注意:嵌套路由中子路由不能以/开头
                {path:"add", conponent:"add", name:"add"}   // 访问子路由 /users/add
            ]
        }
    ]
});

const app=new Vue({
    el:"#app",
    data:{},
    ...
    router    //  router:router  注册路由
})



</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值