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挂载实例。

  • 相关阅读:
    向量代数与空间解析几何(前篇)
    操作系统(笔试系列)-第七讲设备管理
    win10系统IIS服务器配置
    IIS本地部署Arcgis for js API开发文档
    IIS本地部署Arcgis for js API
    vue中使用mockjs服务器测试项目
    vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换
    如何在vue项目打包去掉console
    Vue之element table 后端排序实现
    D3.tsv与D3.csv加载数据
  • 原文地址:https://www.cnblogs.com/smzd/p/12303306.html
Copyright © 2011-2022 走看看