Vue中mixin的使用和插件的使用

  • mixin(混入)

  • 当多个组件的方法、数据相同时。可以统一调用mixin。mixin用于保存组件们共同拥有的方法和数据。

  • 第一个组件和第二个组件有相同的method。用mixin.js进行封装

  • //------------------------第一个组件------------------------------
    
    

  • 当第二个组件和mixin.js文件都设置了x,y属性。先调用组件的x,y。如果组件没有设置x,y属性,则调用mixin.js文件中的x,y

  • mounted()生命周期钩子,如果组件和mixin.js文件都设置mounted。两个的mounted都调用。不存在谁先谁后

  • //--------------------------第二个组件--------------------------------
    

  • 将mixin.js文件进行暴露

  • export const mixin = {
        methods: {
            showName() {
                console.log(this.name);
            }
        }
    }
    export const minxin2 = {
        data(){
            return {
                x:100,
                y:300
            }
        }
    }
    /* 当导出的方法只有一个时用默认导出
     const mixin = {
         methods: {
             showName() {
                 console.log(this.name);
             }
         }
     }
     export default minxin */
  • 全局配置mixin

  • 需要在vm中导入mixin.js

  • import Vue from 'vue'
    import App from './App'
    import {mixin,mixin2} from './components/mixin'
    Vue.mixin(mixin)
    Vue.mixin(mixin2)
    ​
    new Vue({
      el: '#app',
      router,
     render: h => h(App)
    })
     

插件

  • 插件的作用是为组件加buff

  • 下面定义了一个plugins.js的文件作为插件

  • export default {
        // install(){}为成功设置插件
        install(){
            // 全局过滤器
            Vue.filter('upDatetime', function (value) {
                return value.slice(0, 4);
            })
            // 全局v-fbind的自定义指令
            Vue.directive('fbing', {
                bing(element, bangding) {
                    element.value = bangding.value
                },
                inserted(element, bangding) {
                    element.focus()
                },
                update(element, bangding) {
                    element.value = bangding.value
                },
            })
            //给Vue原型上添加一个方法(vm和vc就能用了)
            Vue.prototype.hello = () => {alert('我时hello方法')}
        }
    }
  • 在main.js中引入plugins.js插件

  • import Vue from 'vue'
    import App from './App'
    import plugins from './components/plugins'
    ​
    // 使用use来使用插件
    Vue.use(plugins)
    new Vue({
      el: '#app',
      render: h => h(App)
    })
    ​
  • 在School组件中使用插件提供的功能

你可能感兴趣的:(javascript,vue.js,前端)