框架扩展

2018-08-20  本文已影响0人  九尾的日志

Mixins是对父组件的扩充,Extend扩展组件的构造器

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>扩展</title>
        <script src="vue.js"></script>
    </head>

    <body>

        <!-- mixins 是对父组件的扩充,包括methods、components、directive等。。。
        触发钩子函数时,先调用mixins的函数,再调用父组件的函数。
        虽然也能在创建mixin时添加data、template属性,但当父组件也拥有此属性时以父为准,
        从这一点也能看出制作者的用心(扩充)。data、methods内函数、components和directives
        等键值对格式的对象均以父组件/实例为准 -->

        <!-- extend 扩展组件的构造器,extend创建的是一个组件构造器,而不是一个具体的组件,
            实例最终还是要通过Vue.components注册才可以使用的 -->

        <div id="app"></div>

        <script>
            
            
            //扩展属性和方法
            Vue.mixin({

                methods: {

                    getName: function() {

                        return '返回名字'
                    },

                    timer: function(sec, back) {

                        console.log('计时器启动成功')
                    }
                }
            })

            var vm = new Vue({

                el: '#app',

                created: function() {

                    this.timer()  
                }
            })
            
            

            //扩展组件
            var todoWarp = Vue.extend({
                template: `
                    <ul>
                        <todo-item 
                            v-for="(item, index) in todoData"
                            v-text="item.text"
                        ></todo-item>
                    </ul>
                `,
                props: {
                    todoData: {
                        type: Array,
                        default: []
                    }
                }
            })

            // 注册到全局
            Vue.component('todo', todoWarp)
            
            
        </script>

    </body>
</html>

对Vue原型直接进行扩展

Vue.prototype.$axios = axios;
上一篇下一篇

猜你喜欢

热点阅读