text: export default function (Vue) {
    const version = Number(Vue.version.split('.')[0])
  
    if (version >= 2) { // 如果是2.x.x以上版本，可以使用 hook 的形式进行注入，或使用封装并替换Vue对象原型的_init方法，实现注入。
      Vue.mixin({ beforeCreate: vuexInit })
    } else {
      // override init and inject vuex init procedure
      // for 1.x backwards compatibility.
      const _init = Vue.prototype._init
      Vue.prototype._init = function (options = {}) {
        options.init = options.init
          ? [vuexInit].concat(options.init)
          : vuexInit
        _init.call(this, options)
      }
    }
  
    /**
     * Vuex init hook, injected into each instances init hooks list.
     */
    // 使用Vuex只需执行 Vue.use(Vuex)，并在Vue的配置中传入一个store对象的示例，store是如何实现注入的？
    // 这是一次循环  给每个组件 注入store方法  从父级元素获取
    function vuexInit () {
      const options = this.$options
      // debugger
      // store injection
      if (options.store) {
        this.$store = typeof options.store === 'function'
          ? options.store()
          : options.store
      } else if (options.parent && options.parent.$store) {
        this.$store = options.parent.$store
      }
    }
  }
  