Vue 路由+插件制作

97 阅读1分钟

插件

自定义一个对象,里面有一个install方法,这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象,当使用插件的时候需要用Vue.use()引入

let plugin={
        install(Vue,options){
            //添加全局组件
            Vue.component('hh',{
                template:`<div>SIMBA<slot></slot></div>`
            })
            //添加全局资源
            Vue.directive('simba',{
                inserted(el,binding){
                    //binding是相关的绑定数据,el为当前对象
                    console.log(binding)
                    el.value=binding.value
                    el.focus()
                    //这里的number是修饰符
                    if(binding.modifiers.number){
                        console.log('num')
                    }
                }
            })
            //添加实例方法
            Vue.prototype.$get=function(){}
        }
    }
    Vue.use(plugin)

自定义指令

//注册一个全局指令v-simba
Vue.directive('simba',{
    // 当被绑定的元素插入到 DOM 中时……
    inserted(el,binding){
        //binding是相关的绑定数据,el为当前对象
        console.log(binding)
        el.value=binding.value
        //聚焦元素
        el.focus()
        //这里的number是修饰符
        if(binding.modifiers.number){
            console.log('num')
        }
    }
})
<input type="text" v-simba.number='a'>

路由

简单例子

let vm = new Vue({
        el: '#app',
        router: new VueRouter({
            routes: [
                {
                    path: '/',
                    component: {
                        template: `<h1>首页</h1>`
                    }
                }, {
                    path: '/user',
                    component: {
                        template: `<h1>用户</h1>`
                    }
                }
            ]
        }),
        watch: {
            $route() {
                console.log(this.$route.path)
            }
        },
        mounted() {
            //路由配置对象
            console.log(this.$router)
            //当前路由信息
            console.log(this.$route)
        },
        methods: {
            goUser() {
                this.$router.push('/user').catch(err =>
                    console.log(err.name))
                
            }
        },
    })
<div id="app" v-cloak>
    <router-link tag="button" to='/'>首页</router-link>
    <router-link tag="div" to='/user'>用户</router-link>
    <!-- 容器 -->
    <router-view></router-view>
    <button @click='goUser'>跳转到用户</button>
</div>