天天看點

Vue.js路由

簡單路由

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <script src="../lib/vue.min.js" type="text/javascript" ></script>
        <script src="../lib/vue-router.js" type="text/javascript" charset="utf-8"></script>
        <title>路由</title>
    </head>
    <body>
        <div id="app">
            <p>
                <router-link to='/g'>購物車</router-link>
                <router-link to='/d'>我的訂單</router-link>
            </p>
            <router-view></router-view>
        </div>
        <script type="text/javascript">
        /*定義路由元件*/
        //可以從其他檔案import進來
            const car ={template:'<div>購物車頁面</div>'}
            const order = {template:'<div>訂單頁面</div>'}

            /*定義路由*/
            //每個路由應該映射一個元件
            const myroutes=[
                {path:'/g',component:car},
                {path:'/d',component:order}
            ]
            /*建立router執行個體,然後傳'routes'配置*/
            const myr =new VueRouter({
                routes:myroutes
            })
            /*建立和挂載根執行個體*/
            const app =new Vue({
                router:myr
            }).$mount('#app')

                /*建立根執行個體對象*/
//          const app =new Vue({
//              /*建立路由對象*/
//              router:new VueRouter({
//                  /*指定路由*/
//                  routes:[
//                      {path:'/g',component:{template:'<div>購物車頁面</div>'}},
//                      {path:'/d',component:{template:'<div>訂單頁面</div>'}}  
//                  ]
//              })
//          }).$mount('#app')
        </script>
    </body>
</html>
           

嵌套路由

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <script src="../lib/vue.min.js" type="text/javascript" ></script>
        <script src="../lib/vue-router.js" type="text/javascript" charset="utf-8"></script>
        <title>路由</title>
    </head>
    <body>
        <div id="app">
            <p>
                <router-link to='/aa/car'>購物車</router-link>
                <router-link to='/aa/order'>我的訂單</router-link>
            </p>
            <router-view></router-view>
        </div>
        <script type="text/javascript">
        /*定義路由元件*/
        //可以從其他檔案import進來
            const carson ={template:'<div>購物車子頁面</div>'}
            const orderson = {template:'<div>訂單子頁面</div>'}
            const car ={
                template:"<div v-if=\"$route.params.id=='car'\"><router-link to='/aa/car/carson'>購物車頁面</router-link><router-view></router-view></div>"+
                "<div v-else-if=\"$route.params.id=='order'\"><router-link to='/aa/car/orderson'>我的訂單</router-link><router-view></router-view></div>"
            }
            /*定義路由*/
            //每個路由應該映射一個元件
            const myroutes=[
                {path:'/aa/:id',component:car,children:[{path:'carson',component:carson},{path:'orderson',component:orderson}]},
            ]
            /*建立router執行個體,然後傳'routes'配置*/
            const myr =new VueRouter({
                routes:myroutes
            })
            /*建立和挂載根執行個體*/
            const app =new Vue({
                router:myr
            }).$mount('#app')
        </script>
    </body>
</html>
           

動态路由

<!DOCTYPE html>
<html>
            <!--動态路由即是給傳id值-->
    <head>
        <meta charset="UTF-8">
        <script src="../lib/vue.min.js" type="text/javascript"></script>
        <script src="../lib/vue-router.js" type="text/javascript" charset="utf-8"></script>
        <title>路由</title>
    </head>

    <body>
        <div id="app">
            <p>
                <router-link to='/g'>購物車</router-link>
                <router-link to='/d/dson'>我的訂單</router-link>
            </p>
            <router-view></router-view>
        </div>
        <script type="text/javascript">
        /*定義路由元件*/
            const p={
                template:"<div v-if=\"$route.params.id=='g'\"><router-link to='/g/gson'>購物車頁面</router-link><router-view></router-view></div>"+"<div v-else-if=\"$route.params.id=='d'\">訂單頁面<router-view></router-view></div>"
            }
            const gson={
                template:"<div>123123<router-view></router-view></div>"
            }
            //定義一個路由
            const rout=[
                {path:'/:id',component:p,children:[{path:'gson',component:gson}]}
            ]

            /*建立router執行個體,然後傳'routes'配置*/
            const myr =new VueRouter({
                routes:rout
            })
            /*建立和挂載根執行個體*/
            const app =new Vue({
                router:myr
            }).$mount('#app')
        </script>
    </body>

</html>
           

程式設計導航路由

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <script src="../lib/vue.min.js" type="text/javascript" ></script>
        <script src="../lib/vue-router.js" type="text/javascript" charset="utf-8"></script>
        <title>路由</title>
    </head>
    <body>
        <div id="app">
            <p>
                <button v-on:click="show(0)">購物車</button>
                <button v-on:click="show(1)">我的訂單</button>
            </p>
            <router-view></router-view>
        </div>
        <script type="text/javascript">
        /*定義路由元件*/
        //可以從其他檔案import進來
            const car ={template:'<div>購物車頁面</div>'}
            const order = {template:'<div>訂單頁面</div>'}
            /*定義路由*/
            //每個路由應該映射一個元件
            const myroutes=[
                {path:'/g',component:car},
//              {path:'/d',component:order}
            ]
            /*建立router執行個體,然後傳'routes'配置*/
            const myr =new VueRouter({
                routes:myroutes
            })
            /*建立和挂載根執行個體*/
            const app =new Vue({
                router:myr,
                methods:{
                    show:function(num){
                        if(num==){
//                          myr.push('g')
                            myr.push({path:'g',query:{name:'hello'}})
                        }else{
//                          myr.push('d')
                            myr.push({path:'d',query:{name:'world'}}) //query參數是在位址拼接參數
                        }
                    }
                }
            }).$mount('#app')
            window.onload=app.show()
        </script>
    </body>
</html>
           

命名視圖

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <script src="../lib/vue.min.js" type="text/javascript" ></script>
        <script src="../lib/vue-router.js" type="text/javascript" charset="utf-8"></script>
        <title>路由</title>
    </head>
    <body>
        <div id="app">
            <p>
                <router-link to='/g'>購物車</router-link>
                <router-link to='/d'>我的訂單</router-link>
            </p>
            <router-view></router-view>
            <router-view name="a"></router-view>
        </div>
        <script type="text/javascript">
        /*定義路由元件*/
        //可以從其他檔案import進來
            const car ={template:'<div>購物車頁面</div>'}
            const order = {template:'<div>訂單頁面</div>'}
            const shop = {template:'<div>商品頁面</div>'}
            /*定義路由*/
            //每個路由應該映射一個元件
            const myroutes=[
            /*注意這裡的是components ,不是component*/
                {path:'/g',components:{default:car,a:order}},
                {path:'/d',components:{default:order,a:shop}}
            ]
            /*建立router執行個體,然後傳'routes'配置*/
            const myr =new VueRouter({
                routes:myroutes
            })
            /*建立和挂載根執行個體*/
            const app =new Vue({
                router:myr
            }).$mount('#app')
        </script>
    </body>
</html>