zoukankan      html  css  js  c++  java
  • vue-router路由器的使用

    一、 vue-router路由

      1、简介

        1、为什么要用vue-router

          使用Vue.js开发SPA(Single Page Application)单页面应用

        2、什么是单页面应用

          根据不同url地址,显示不同的内容,但显示在同一个页面中,称为单页面应用

        3、安装

          bower info vue-router  //查看版本信息

          cnpm install vue-router -S//安装

      2、基本用法

        1、布局

          显示内容

        2、配置路由

          创建路由四步骤:定义组件》》》配置路由》》》创建路由实例》》》路由挂载

        3、示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>路由基本用法</title>
        <style>
            /* .router-link-active{
                font-size:20px;
                color:#ff7300;
                text-decoration:none;//去除下划线
            } */
            .active{
                font-size:20px;
                color:#ff7300;
                text-decoration:none;
            }
        </style>
        <script src="js/vue.js"></script>
        <script src="js/vue-router.js"></script>
    </head>
    <body>
        <div id="itany">
            <div>
                <!-- 使用router-link组件来定义导航,to属性指定链接url ,router-link组件最终会变成a标签-->
                <router-link to="/home">主页</router-link>
                <router-link to="/news">新闻</router-link>
            </div>
            <div>
                <!-- router-view用来显示路由内容 -->
                <router-view></router-view>
            </div>
        </div>
    
        <script>
            //1.定义组件
            var Home={
                template:'<h3>我是主页</h3>'
            }
            var News={
                template:'<h3>我是新闻</h3>'
            }
    
            //2.配置路由(路径和组件之间的关系)
            const routes=[  //routes是个数组,数组里的每一个对象都表示一个路由
                {path:'/home',component:Home}, //路径home对应的组件内容是Home
                {path:'/news',component:News},
                {path:'*',redirect:'/home'} //重定向,如果都找不到路由匹配就默认显示/home页面
            ]
    
            //3.创建路由实例
            const router=new VueRouter({   //VueRouter就是/vue-router.js里的
                routes, //简写,相当于routes:routes
                // mode:'history', //更改模式,默认是hash模式,默认模式每个路径前面会有个#号
                linkActiveClass:'active' //更新活动链接的class类名,后期好给链接改css样式
            });
    
            //4.创建根实例并将路由挂载到Vue实例上
            new Vue({
                el:'#itany',
                router //注入路由,相当于router:router
            });
        </script>
    </body>
    </html>
    View Code

      3、 路由嵌套和参数传递       

        1、传参的两种形式:

          1、查询字符串:login?name=tom&pwd=123         {{$route.query}}

          2、rest风格url:regist/alice/456      {{$route.params}}

        2、总结:

          1、字符串形式传参流程:组件中传参》》》 template模板中通过{{$route.query}},直接获取

          2、rest风格传参流程:组件中传参》》》路由中指定》》》template模板中通过  {{$route.params}}获取

        3、路由实例的方法 

          1、router.push()  添加路由,功能上与<route-link>相同,区别就在于改方法更灵活,可以自由的修改

          2、 router.replace() 替换路由,不产生历史记录    

        4、路由结合动画

          略

        5、示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>路由嵌套和参数传递</title>
        <link rel="stylesheet" href="css/animate.css">
        <style>
            .active{
                font-size:20px;
                color:#ff7300;
                text-decoration:none;
            }
        </style>
        <script src="js/vue.js"></script>
        <script src="js/vue-router.js"></script>
    </head>
    <body>
        <div id="itany">
            <div>
                <router-link to="/home">主页</router-link>
                <router-link to="/user">用户</router-link>
            </div>
            <div>
                <transition enter-active-class="animated bounceInLeft" leave-active-class="animated bounceOutRight">//结合动画使用
                    <router-view></router-view>
                </transition>
            </div>
    
            <hr>
            <button @click="push">添加路由</button>
            <button @click="replace">替换路由</button>
        </div>
    
        <template id="user">
            <div>
                <h3>用户信息</h3>
                <ul>
                    <router-link to="/user/login?name=tom&pwd=123" tag="li">用户登陆</router-link>//参数传递方式1,下面是方式2
                    <router-link to="/user/regist/alice/456" tag="li">用户注册</router-link>//<router-link默认被渲染成a标签,使用tag来指定被渲染成什么类型的标签
                </ul>
                <router-view></router-view>
            </div>
        </template>
    
        <script>
            var Home={
                template:'<h3>我是主页</h3>'
            }
            var User={
                template:'#user'
            }
            var Login={
                template:'<h4>用户登陆。。。获取参数:{{$route.query}},{{$route.path}}</h4>'//获取参数传递方式1的参数
            }
            var Regist={
                template:'<h4>用户注册。。。获取参数:{{$route.params}},{{$route.path}}</h4>'//获取参数传递方式2的参数
            }
    
            const routes=[
                {path:'/home',component:Home},
                {path:'/user',component:User,children:[{path:'login',component:Login},{path:'regist/:username/:password',component:Regist}]},//路由嵌套+参数传递方式2的参数接收
                {path:'*',redirect:'/home'}
            ]
    
            const router=new VueRouter({
                routes, //简写,相当于routes:routes
                linkActiveClass:'active' //更新活动链接的class类名
            });
    
            new Vue({
                el:'#itany',
                router, //注入路由
                methods:{
                    push(){
                        router.push({path:'home'}); //添加路由,切换路由,实际上是做路由的跳转。
                    },
                    replace(){
                        router.replace({path:'user'}); //替换路由,没有历史记录,但是普通的router-link跳转是会有历史记录的。
                    }
                }
            });
        </script>
    </body>
    </html>
    View Code
  • 相关阅读:
    事务
    约束条件(CONSTRAINTS)
    算术运算符
    数据查询、修改指令
    iview-admin使用webpack打包之后发布报Uncaught SyntaxError: Unexpected token <
    使用localhost可以访问,但使用本地ip+端口号无法访问
    datatables里面的search怎么去掉?
    删除操作之后的确定或取消弹出框?
    jquery实现上传图片本地预览效果
    怎么改变title属性的样式?
  • 原文地址:https://www.cnblogs.com/xuanan/p/7860664.html
Copyright © 2011-2022 走看看