global.installComponents = function (component, components) { var options = typeof component.exports === 'function' ? component.exports.extendOptions : component.options if (typeof component.exports === 'function') { options.components = component.exports.options.components } options.components = options.components || {} for (var i in components) { options.components[i] = options.components[i] || components[i] } if (options.functional) { provideFunctionalComponents(component, options.components) } } var functionalPatchKey = '_functionalComponents' function provideFunctionalComponents(component, components) { if (component.exports[functionalPatchKey]) { return } component.exports[functionalPatchKey] = true var render = component.exports.render component.exports.render = function (h, vm) { return render(h, Object.assign({}, vm, { _c: function (n, a, b) { return vm._c(components[n] || n, a, b) } })) } }