Vue源码解读 Day2
从构建入口web-runtime-cjs-dev resolve(‘web/entry-runtime.js’)开始解读。这个文件构建的是Runtime Only 版本。
resolve(‘web/entry-runtime.js’) 这个解析的文件地址是src/platforms/web/entry-runtime.js
entry-runtime.js的内容如下,这个文件将src/platforms/web/runtime/index导出的Vue文件作为默认文件导出。
import Vue from './runtime/index'
export default Vue
src/platforms/web/runtime/index信息如下
// install platform specific utils
Vue.config.mustUseProp = mustUseProp
Vue.config.isReservedTag = isReservedTag
Vue.config.isReservedAttr = isReservedAttr
Vue.config.getTagNamespace = getTagNamespace
Vue.config.isUnknownElement = isUnknownElement
// install platform runtime directives & components
extend(Vue.options.directives, platformDirectives)
extend(Vue.options.components, platformComponents)
// install platform patch function
Vue.prototype.__patch__ = inBrowser ? patch : noop
// public mount method
Vue.prototype.$mount = function (
el?: string | Element,
hydrating?: boolean
): Component {
el = el && inBrowser ? query(el) : undefined
return mountComponent(this, el, hydrating)
}
// devtools global hook
/* istanbul ignore next */
if (inBrowser) {
///略
}
export default Vue
以上主要做了如下几件事情:
- 注册特定工具方法
- 注册指令和组件
- 安装补丁函数
- 给Vue添加全局mount方法
- 开发者工具devtool添加全局钩子