27 lines
755 B
JavaScript
27 lines
755 B
JavaScript
import config from '../config'
|
|
import {initLifecycle, callHook} from './lifecycle'
|
|
import {initRender} from '../render'
|
|
import {initRouter} from '../router'
|
|
import {initEvent} from '../event'
|
|
import {initFetch} from '../fetch'
|
|
import {isFn} from '../util/core'
|
|
|
|
export function initMixin(proto) {
|
|
proto._init = function () {
|
|
const vm = this
|
|
vm.config = config || {}
|
|
|
|
initLifecycle(vm) // Init hooks
|
|
initPlugin(vm) // Install plugins
|
|
callHook(vm, 'init')
|
|
initRouter(vm) // Add router
|
|
initRender(vm) // Render base DOM
|
|
initEvent(vm) // Bind events
|
|
initFetch(vm) // Fetch data
|
|
callHook(vm, 'mounted')
|
|
}
|
|
}
|
|
|
|
function initPlugin(vm) {
|
|
[].concat(vm.config.plugins).forEach(fn => isFn(fn) && fn(vm._lifecycle, vm))
|
|
}
|