Vue項目作了很多,最近在學習設計模式與Vue源碼,記錄一下本身的腳印!共勉!注:此處源碼學習方式爲先了解其大模塊,從宏觀再去到微觀學習,以避免一開始就研究細節而後出不來~vue
config.js 'web-full-dev': { entry: resolve('web/entry-runtime-with-compiler.js'), }
entry-runtime-with-compiler.js import config from 'core/config' import Vue from './runtime/index' export default Vue
runtime/index.js import Vue from 'core/index'
instance/index.js import { initMixin } from './init' import { stateMixin } from './state' import { renderMixin } from './render' import { eventsMixin } from './events' import { lifecycleMixin } from './lifecycle' import { warn } from '../util/index' function Vue (options) { if (process.env.NODE_ENV !== '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) export default Vue
1.//初始化的入口,各類初始化工做 2.initMixin(Vue) 3.//數據綁定的核心方法,包括經常使用的$watch方法 4.stateMixin(Vue) 5.//事件的核心方法,包括經常使用的$on,$off,$emit方法 6.eventsMixin(Vue) 7.//生命週期的核心方法 8.lifecycleMixin(Vue) 9.//渲染的核心方法,用來生成render函數以及VNode 10.renderMixin(Vue)