Vue源码阅读笔记(一)new Vue 实例

一.new Vue 发生了什么?

很简单:初始化传入的options,生成一个vue实例

function Vue (options) {

  this._init(options)

}

 

二._init做了什么?

Vue.prototype._init = function (options) {
  var vm = this;
  // a uid
  vm._uid = uid$3++;
  vm._isVue = true;
  // merge options
  vm.$options = mergeOptions(
      resolveConstructorOptions(vm.constructor),
      options || {},
      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.merge  options  2.初始化生命周期,数据,方法等等。看代码可以更好理解生命周期图;3.初始化数据:initState。

4.最后执行$mount,实例挂载。

三.数据初始化initState做了什么?

初始化props,methods,data。 接下来看initData:

数据初始化,做了数据代理,proxy。然后对数据新建obseve。那么proxy做了什么?主要是Object.defineProerty

ergmechusg e optionsge options

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值