【21】vue.js — 路由

vue.js中的路由是根据不同路径来展示不同的页面效果

路由入门

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="js/vue.js" ></script>
        <script src="js/vue-router.js"></script>
    </head>
    <body>
        <div id="box">
            <ul>
                <li>
                    <a v-link="{path:'/home'}">主页</a>
                </li>
                <li>
                    <a v-link="{path:'/news'}">新闻</a>
                </li>
            </ul>
            <div>
                <router-view></router-view>
            </div>
        </div>
    </body>
    <script>
        //1.准备一个根组件
        var App = Vue.extend();
        //2.Home News组件都准备
        var Home = Vue.extend({
            template: '<h3>我是主页</h3>'
        });
        var News = Vue.extend({
            template: '<h3>我是新闻</h3>'
        });
        //3.准备路由
        var router = new VueRouter();
        //4.关联
        router.map({
            'home': {
                component: Home
            },
            'news': {
                component: News
            }
        });
        //5.启动路由
        router.start(App,'#box');
    </script>
</html>

多层路由

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="js/vue.js"></script>
        <script type="text/javascript" src="js/vue-router.js" ></script>
        <style>

        </style>
    </head>
    <body>
        <div id="box">
            <ul>
                <li>
                    <a v-link="{path:'/home'}">主页</a>
                </li>
                <li>
                    <a v-link="{path:'/news'}">新闻</a>
                </li>
            </ul>
            <div>
                <router-view></router-view>
            </div>
        </div>
        <template id="home">
            <h3>我是主页</h3>
            <div>
                <a v-link="{path:'/home/login'}">登录</a>
                <a v-link="{path:'/home/reg'}">注册</a>
            </div>
            <div>
                <router-view></router-view>
            </div>
        </template>
        <template id="news">
            <h3>我是新闻</h3>
        </template>
    </body>
    <script>
        //1.准备一个组件
        var App = Vue.extend();

        //2. Home News组件都准备
        var Home = Vue.extend({
            template: '#home'
        });

        var News = Vue.extend({
            template: '#news'
        });

        //3.准备路由
        var router=new VueRouter();

        //4.关联
        router.map({
            'home': {
                component: Home,
                subRoutes: {
                    'login': {
                        component: {
                            template: '<strong>我是登录信息<strong>'
                        }
                    },
                    'reg': {
                        component: {
                            template: '<strong>我是注册信息</strong>'
                        }
                    }
                }
            },
            'news':{
                component:News
            }
        });
        //5. 启动路由
        router.start(App,'#box');

        //6. 跳转
        router.redirect({
            '/':'home'
        });
    </script>
</html>

多层路由

vue中路由传递参数

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="js/vue.js"></script>
        <script type="text/javascript" src="js/vue-router.js" ></script>
    </head>
    <body>
        <div id="box">
            <ul>
                <li>
                    <a v-link="{path:'/home'}">主页</a>
                </li>
                <li>
                    <a v-link="{path:'/news'}">新闻</a>
                </li>
            </ul>
            <div>
                <router-view></router-view>
            </div>
        </div>
        <template id="home">
            <h3>我是主页</h3>
            <div>
                <a v-link="{path:'/home/login'}">登录</a>
                <a v-link="{path:'/home/reg'}">注册</a>
            </div>
            <div>
                <router-view></router-view>
            </div>
        </template>
        <template id="news">
            <h3>我是新闻</h3>
            <div>
                <a v-link="{path:'/news/detail/001'}">新闻001</a>
                <a v-link="{path:'/news/detail/002'}">新闻002</a>
            </div>
            <router-view></router-view>
        </template>
        <template id="detail">
            {{$route.params | json}}
        </template>
    </body>
    <script>
        //1.准备一个组件
        var App = Vue.extend();

        //2. Home News组件都准备
        var Home = Vue.extend({
            template: '#home'
        });

        var News = Vue.extend({
            template: '#news'
        });

        var Detail = Vue.extend({
            template: '#detail'
        });

        //3.准备路由
        var router=new VueRouter();

        //4.关联
        router.map({
            'home': {
                component: Home,
                subRoutes: {
                    'login': {
                        component: {
                            template: '<strong>我是登录信息<strong>'
                        }
                    },
                    'reg': {
                        component: {
                            template: '<strong>我是注册信息</strong>'
                        }
                    }
                }
            },
            'news':{
                component:News,
                subRoutes: {
                    '/detail/:id': {
                        component: Detail
                    }
                }
            }
        });
        //5. 启动路由
        router.start(App,'#box');

        //6. 跳转
        router.redirect({
            '/':'home'
        });
    </script>
</html>

路由传递参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值