vue 源码阅读记录

0.webpack默认引入的是vue.runtime.common.js,并不是vue.js,功能有略微差别,不影响使用

1.阅读由ts编译后的js: 入口>构造函数 >定义各类方法 > return vue;

function Vue (options) {
  if ("development" !== 'production' &&
    !(this instanceof Vue)
  ) {
    warn('Vue is a constructor and should be called with the `new` keyword');
  }
  this._init(options);
}

initMixin(Vue);
stateMixin(Vue);
eventsMixin(Vue);
lifecycleMixin(Vue);
renderMixin(Vue);

2.Vue.use() 功能实现

  function initUse(Vue) {
    Vue.use = function (plugin) {
      var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
      if (installedPlugins.indexOf(plugin) > -1) {
        return this
      }

      // additional parameters
      var args = toArray(arguments, 1);
      args.unshift(this);
      if (typeof plugin.install === 'function') {
        plugin.install.apply(plugin, args);
      } else if (typeof plugin === 'function') {
        plugin.apply(null, args);
      }
      installedPlugins.push(plugin);
      return this
    };
  }

  

posted on 2018-12-08 15:38  童彪  阅读(131)  评论(0编辑  收藏  举报

导航