zoukankan      html  css  js  c++  java
  • 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)
        }
      }
    
    
    1. initProxy,作用域代理,拦截组件内访问其它组件的数据。
    2. initLifecycle建立父子组件关系,在当前实例上添加一些属性和生命周期标识。如: $children $refs_isMounted 等。
    3. initEvents 用来存放除 @hook:生命周期钩子名称="绑定的函数"事件的对象。如: $on $emit 等。
    4. initRender 用于初始化 $slots $attrs $listeners
    5. initInjections初始化 inject ,一般用于更深层次的组件通信,相当于加强版子组件的 props 。用于组件库开发较多。
    6. initState 是很多选项初始化的汇总,包括: props 、methods 、data 、computedwatch 等。
    7. initProvide 初始化 provide
    8. vm.$mount挂载实例。

  • 相关阅读:
    Ubuntu安装配置samba
    AFNetworking 和 ASIHTTPRequest
    github代码托管
    Java使用poi包读取Excel文档
    Eclipse-设置保存时自动给变量加final
    Eclipse-设置格式化代码时不格式化注释
    Map的内容按字母顺序排序
    Mysql--mysqldump命令 备份数据库
    Mysql--alter命令
    Java IO 文件
  • 原文地址:https://www.cnblogs.com/smzd/p/12303306.html
Copyright © 2011-2022 走看看