new Vue()做了什么?
Posted smzd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了new Vue()做了什么?相关的知识,希望对你有一定的参考价值。
Vue.prototype._init = function (options?: Object) {
// a flag to avoid this being observed
vm._isVue = true
// merge options
if (options && options._isComponent) {
// optimize internal component instantiation
// since dynamic options merging is pretty slow, and none of the
// internal component options needs special treatment.
initInternalComponent(vm, options)
} else {
vm.$options = mergeOptions(
resolveConstructorOptions(vm.constructor),
options || {},
vm
)
}
/* istanbul ignore else */
if (process.env.NODE_ENV !== 'production') {
initProxy(vm)
} else {
vm._renderProxy = vm
}
// expose real self
vm._self = vm
initLifecycle(vm)
initEvents(vm)
initRender(vm)
callHook(vm, 'beforeCreate')
initInjections(vm) // resolve injections before data/props
initState(vm)
initProvide(vm) // resolve provide after data/props
callHook(vm, 'created')
if (vm.$options.el) {
vm.$mount(vm.$options.el)
}
}
initProxy
,作用域代理,拦截组件内访问其它组件的数据。initLifecycle
建立父子组件关系,在当前实例上添加一些属性和生命周期标识。如:$children
、$refs
、_isMounted
等。initEvents
用来存放除 @hook:生命周期钩子名称="绑定的函数"事件的对象。如:$on
、$emit
等。initRender
用于初始化$slots
、$attrs
、$listeners
initInjections
初始化inject
,一般用于更深层次的组件通信,相当于加强版子组件的props
。用于组件库开发较多。initState
是很多选项初始化的汇总,包括:props
、methods
、data
、computed
和watch
等。initProvide
初始化provide
vm.$mount
挂载实例。
以上是关于new Vue()做了什么?的主要内容,如果未能解决你的问题,请参考以下文章