vue 前端2

路由的注册:不推荐直接使用to  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
</head>
<body>
    <div id="app">//这是显示到页面
        <router-link to="/">首页</router-link>
        <router-link to="/about">关于我们</router-link>
        <router-link to="/user">用户管理</router-link>

    <div>承载的空间,不起名为默认三个都可以使用
        <router-view></router-view>
    </div>
        </div>
    <script>
        let routes = [
            {
                path:'/',
                component:{template:`<div><h1>这是首页</h1></div>`}
            },
            {
                path:'/about',
                component:{template:`<div><h1>关于我们</h1></div>`}
            },
            {
                path:'/user',
                component:{template:`<div><h1>用户管理</h1></div>`}
            },
        ];//页面显示的内容
        let router = new  VueRouter({
            routes:routes //实例化vuerouter
        });
        const  app = new Vue({
            el:'#app',
            router:router  //注册router
        })
    </script>
</body>
</html>

 路由的命名及视图:推荐使用name 适用于对于头和尾的问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
    <style>
        .fooder{
            position: fixed;
            bottom: 0;
        }
    </style>
</head>
<body>
    <div id="app">
        <router-link :to={name:"index"}>首页</router-link>
        <router-link :to={name:"about"}>关于我们</router-link>
        <router-link to="/user">用户管理</router-link>

    <div>
        <router-view name="header"></router-view>
        <router-view name="fooder" class="fooder"></router-view>
        <router-view></router-view>
    </div>
        </div>
    <script>
        let routes = [
            {
                path:'/',
                name:'index',
                components:{header:{template:`<div><h1>头部</h1></div>`},
                fooder:{template:`<div><h1>底部</h1></div>`}}
            },
            {
                path:'/about',
                name:'about',
                component:{template:`<div><h1>关于我们</h1></div>`}
            },
            {
                path:'/user',
                component:{template:`<div><h1>用户管理</h1></div>`}
            },
        ];
        let router = new  VueRouter({
            routes:routes
        });
        const  app = new Vue({
            el:'#app',
            router:router
        })
    </script>
</body>
</html>

路由的参数:

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
    <style>
        .fooder{
            position: fixed;
            bottom: 0;
        }
    </style>
</head>
<body>
    <div id="app">
      <!--可以复用,name匹配下边的userinfo以及参数--> <router-link :to={name:"index"}>首页</router-link> <router-link :to={name:"about"}>关于我们</router-link> <router-link :to={name:"index"}>跳转首页</router-link> <router-link :to="{name:'userinfo',params:{name:'alex'},query:{age:48}}">用户管理</router-link> <div> <router-view name="header"></router-view> <router-view name="fooder" class="fooder"></router-view> <router-view></router-view> </div> </div> <script> let routes = [ { path:'/', name:'index', components:{header:{template:`<div><h1>头部</h1></div>`}, fooder:{template:`<div><h1>底部</h1></div>`}} }, { path:'/about', name:'about', component:{template:`<div><h1>关于我们</h1></div>`} }, { path:'/user/:name', name:'userinfo', component:{template:`<div><h1>{{username}}的年龄是{{age}}</h1></div>`,//赋值操作 data(){ return { username:this.$route.params.name, age:this.$route.query.age,//取值操作 } }, },}, ]; let router = new VueRouter({ routes:routes }); const app = new Vue({ el:'#app', router:router }) </script> </body> </html>

路由的钩子,有很多的钩子这里举得例子是router.beforeEach(to, from, next),to准备去哪,from 来自哪 ,next执行(),查看生命周期会有更多的钩子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
</head>
<body>
<div id="app">
    <router-link to="/">首页</router-link>
    <router-link to="/login">关于我们</router-link>
    <router-link to="/user">用户管理</router-link>
    <router-link to="/vip">vip管理</router-link>
    <div>
        <router-view></router-view>
    </div>
</div>

<script>
    let routes = [
        {
            path: "/",
            component: {
                template: `<div><h1>这是首页</h1></div>`
            }
        },
        {
            path: "/login",
            component: {
                template: `<div><h1>关于我们</h1></div>`
            }
        },
        {
            path: "/user",
            component: {
                template: `<div>
                            <h1>用户管理</h1>
                            <router-link :to="{name:'more'}">用户详情</router-link>
                            <router-link :to="{name:'mores'}">用户更多详细信息</router-link>
                            </div>`, },
            children:[
                {
                    path:"more",
                    name:'more',
                    meta:{
                        required_login:true
                    },
                    component:{
                        template:`<div><h1>用户详细信息</h1></div>`
                    }
                },
                {
                    path:"mores",
                    name:'mores',
                    meta:{
                        required_login:true
                    },
                    component:{
                        template:`<div><h1>用户更多详细信息</h1></div>`
                    }
                },

            ]

        },
        {
            path:"/vip",
            meta:{
                required_login:true
            },
            component:{
                template:`<div><h1>vip管理</h1></div>`
            }
        }
    ];
    let router = new VueRouter({
        routes: routes
    });
    router.beforeEach(function (to,from,next) {
        if(to.meta.required_login){
            next('/login')
        }else{
            next()
        }
    });
    const app = new Vue({
        el: "#app",
        router: router,
    })


</script>
</body>
</html>

生命周期代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/vue/2.5.17-beta.0/vue.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
</head>
<body>
<div id="app">
    {{name}}
</div>

<script>
    const app = new Vue({
        el: "#app",
        data: {
            name: "alex",
        },
        methods: {
            init: function () {
                return 1
            }
        },
        beforeCreate(){
            console.group("bebeforeCreate ########")
            console.log("data##", this.$data)
            console.log("el##", this.$el)
            console.log("msg##", this.name)
            console.log("func##", this.init)
        },
        created(){
            console.group("Create ########")
            console.log("data##", this.$data)
            console.log("el##", this.$el)
            console.log("msg##", this.name)
            console.log("func##", this.init)
        },
        beforeMount(){
            console.group("beforeMount ########")
            console.log("data##", this.$data)
            console.log("el##", this.$el)
            console.log("msg##", this.name)
            console.log("func##", this.init)
        },
        mounted(){
            console.group("mounted ########")
            console.log("data##", this.$data)
            console.log("el##", this.$el)
            console.log("msg##", this.name)
            console.log("func##", this.init)
        },
        beforeUpdate(){
            console.group("beforeUpdate ########")
            console.log("data##", this.$data)
            console.log("el##", this.$el)
            console.log("msg##", this.name)
            console.log("func##", this.init)
        },
        updated(){
            console.group("updated ########")
            console.log("data##", this.$data)
            console.log("el##", this.$el)
            console.log("msg##", this.name)
            console.log("func##", this.init)
        },
        beforeDestroy(){
            console.group("bef des ########")
            console.log("data##", this.$data)
            console.log("el##", this.$el)
            console.log("msg##", this.name)
            console.log("func##", this.init)
        },
        destroyed(){
            console.group("des ########")
            console.log("data##", this.$data)
            console.log("el##", this.$el)
            console.log("msg##", this.name)
            console.log("func##", this.init)
        }

    })
</script>
</body>
</html>

  

 


  

posted @ 2018-08-28 19:27  又见芳踪  阅读(128)  评论(0编辑  收藏  举报