// 目前仅支持 store, use, mixin, component, prototype let store const mixins = [] const plugins = [] const components = [] // fake function Vue (options) { if (options && options.store) { store = options.store } } Vue.prototype.$mount = function () {} Vue.config = {} Vue.use = function (plugin) { const isVuex = plugin.Store && plugin.mapState if (isVuex) { const exports = {} /* eslint-disable no-undef */ context.VueFactory(exports, {} /* document */, {} /* quickappHelper */) plugin.install(exports.Vue) } else { plugins.push(plugin) } } Vue.mixin = function (mixin) { mixins.push(mixin) } Vue.component = function (id, definition) { components.push({ id, definition }) } const injectRef = Object.getPrototypeOf(global) || global injectRef.__VuePlugin = { install (PageVue, options) { mixins.forEach(mixin => { PageVue.mixin(mixin) }) plugins.forEach(plugin => { PageVue.use(plugin) }) components.forEach(({ id, definition }) => { PageVue.component(id, definition) }) Object.keys(Vue.prototype).forEach(name => { if (name !== '$mount') { PageVue.prototype[name] = Vue.prototype[name] } }) store && (PageVue.prototype.$store = store) } } export default Vue