Vue源码中core是Vue的核心,它实现了Vue的主体功能,是平台无关的,不论是web或是wexx都要依赖它。它的目录结构很清晰,如下
- components
- global-api
- instance
- observer
- util
- vdom
- config.js
- index.js
简单的内容在本文就直接介绍了,需要展开的内容会再单独开一篇文章来详细说明。
components
core中内置的组件 传送门
global-api
这里给Vue添加类方法 传送门
instance
这里定义了Vue构造函数,以及Vue.prototype上的方法 传送门
util
工具类 传送门
vdom
虚拟DOM 传送门
config.js
Vue的全局配置,它会影响的Vue的行为。这个配置最终会被放在Vue.config上,initGlobalAPI里面做的。
export default ({
/**
* Option merge strategies (used in core/util/options)
*/
// $flow-disable-line
optionMergeStrategies: Object.create(null),
/**
* Whether to suppress warnings.
*/
silent: false,
/**
* Show production mode tip message on boot?
*/
productionTip: process.env.NODE_ENV !== 'production',
/**
* Whether to enable devtools
*/
devtools: process.env.NODE_ENV !== 'production',
/**
* Whether to record perf
*/
performance: false,
/**
* Error handler for watcher errors
*/
errorHandler: null,
/**
* Warn handler for watcher warns
*/
warnHandler: null,
/**
* Ignore certain custom elements
*/
ignoredElements: [],
/**
* Custom user key aliases for v-on
*/
// $flow-disable-line
keyCodes: Object.create(null),
/**
* Check if a tag is reserved so that it cannot be registered as a
* component. This is platform-dependent and may be overwritten.
*/
isReservedTag: no,
/**
* Check if an attribute is reserved so that it cannot be used as a component
* prop. This is platform-dependent and may be overwritten.
*/
isReservedAttr: no,
/**
* Check if a tag is an unknown element.
* Platform-dependent.
*/
isUnknownElement: no,
/**
* Get the namespace of an element
*/
getTagNamespace: noop,
/**
* Parse the real tag name for the specific platform.
*/
parsePlatformTagName: identity,
/**
* Check if an attribute must be bound using property, e.g. value
* Platform-dependent.
*/
mustUseProp: no,
/**
* Perform updates asynchronously. Intended to be used by Vue Test Utils
* This will significantly reduce performance if set to false.
*/
async: true,
/**
* Exposed for legacy reasons
*/
_lifecycleHooks: LIFECYCLE_HOOKS
}: Config)
index.js
这是core的入口文件,它负责把instance提供的Vue构造函数暴露出去。
- 引入instance提供的Vue,参考instance的内容
- 用global-api提供的initGlobalAPI函数在Vue上添加类方法,参考global-api的内容
- 在Vue.prototype上添加 i s S e r v e r 和 isServer和 isServer和ssrContext
- 在Vue上添加FunctionalRenderContext和version
有用点赞哦,嘻嘻:)