上一節(jié)我們簡(jiǎn)要的介紹了一下初始化Global API的過程选脊,下面我們?cè)敿?xì)來看看鸣个。
Global Config
OK榛斯,結(jié)合官方文檔和代碼細(xì)節(jié)绊汹,我們來看看這些 Global Config的具體用法:
-
Vue.config.optionMergeStrategies
文檔說明:
- 類型:
{ [key: string]: Function }
- 默認(rèn)值:
{}
- 用法:
Vue.config.optionMergeStrategies._my_option = function (parent, child, vm) {} const Profile = Vue.extend({_my_option: 1})
自定義合并策略的選項(xiàng)。合并策略選項(xiàng)分別接受第一個(gè)參數(shù)作為父實(shí)例奖慌,第二個(gè)參數(shù)為子實(shí)例抛虫,Vue實(shí)例上下文被作為第三個(gè)參數(shù)傳入。
源碼中與 Vue.config.optionMergeStrategies 相關(guān)的主要有兩個(gè)文件
// src/core/config.js // src/core/util/options.js
- 'src/core/config.js' 中給定了默認(rèn)值简僧。
- 'src/core/util/options.js' 之中有個(gè) mergeOptions 函數(shù)建椰,是用來合并屬性的。
具體看看細(xì)節(jié)岛马,它會(huì)根據(jù)具體的合并策略合并屬性:
如果某一屬性存在自定義策略广凸,則使用自定義策略給定的方法進(jìn)行合并。
如果不存在自定義策略蛛枚,則是用默認(rèn)策略:如果子實(shí)例有值則使用該值谅海,子實(shí)例沒有則使用父實(shí)例的值。 - 該文件之中還預(yù)定義了一些合并策略供內(nèi)部使用蹦浦,主要針對(duì)vue的保留字 :
[
'el',
'propsData',
'data',
'beforeCreate',
'created',
'beforeMount',
'mounted',
'beforeUpdate',
'updated',
'beforeDestroy',
'destroyed',
'activated',
'deactivated',
'components',
'directives',
'filters',
'watch',
'props',
'methods',
'computed'
]
- 類型:
-
Vue.config.silent
文檔說明:
- 類型:
boolean
- 默認(rèn)值:
false
- 用法:
Vue.config.silent = true
取消 Vue 所有的日志與警告扭吁。
源碼中與 Vue.config.silent 相關(guān)的主要有兩個(gè)文件
// src/core/config.js // src/core/util/debug.js
- 'src/core/config.js' 中給定了默認(rèn)值。
- 'src/core/util/debug.js' 之中有個(gè)供全局使用的 warn 函數(shù)盲镶,會(huì)是用這個(gè)值來判斷是否輸出警告信息侥袜。
- 類型:
-
Vue.config.devtools
文檔說明:
- 類型:
boolean
- 默認(rèn)值:
true (生產(chǎn)版為 false)
- 用法:
//務(wù)必在加載 Vue 之后,立即同步設(shè)置以下內(nèi)容 Vue.config.devtools = true
配置是否允許 vue-devtools 檢查代碼溉贿。開發(fā)版本默認(rèn)為 true枫吧,生產(chǎn)版本默認(rèn)為 false。生產(chǎn)版本設(shè)為 true 可以啟用檢查宇色。
源碼中與 Vue.config.devtools 相關(guān)的主要有4個(gè)文件
// src/core/config.js // src/core/observer/scheduler.js // src/entries/web-runtime.js // src/server/render.js
- 'src/core/config.js' 中給定了默認(rèn)值九杂。
- 其它文件中,主要使用這個(gè)值來判斷是否啟用真正的 devtools 來觸發(fā)調(diào)試事件或打印調(diào)試信息宣蠕。
- 類型:
-
Vue.config.errorHandler
文檔說明:
- 類型:
Function
- 默認(rèn)值:
默認(rèn)拋出錯(cuò)誤
- 用法:
Vue.config.errorHandler = function (err, vm) { }
指定組件的渲染和觀察期間未捕獲錯(cuò)誤的處理函數(shù)例隆。這個(gè)處理函數(shù)被調(diào)用時(shí),可獲取錯(cuò)誤信息和 Vue 實(shí)例抢蚀。
源碼中與 Vue.config.errorHandler 相關(guān)的主要有3個(gè)文件
// src/core/config.js // src/core/instance/render.js // src/core/observer/watcher.js
- 'src/core/config.js' 中給定了默認(rèn)值镀层。
- 其它文件中,主要使用給定的錯(cuò)誤處理函數(shù)來進(jìn)行自定義錯(cuò)誤處理皿曲。
- 類型:
-
Vue.config.ignoredElements
文檔說明:
- 類型:
Array<string>
- 默認(rèn)值:
[]
- 用法:
Vue.config.ignoredElements = [ 'my-custom-web-component', 'another-web-component' ]
須使 Vue 忽略在 Vue 之外的自定義元素 (e.g., 使用了 Web Components APIs)唱逢。否則吴侦,它會(huì)假設(shè)你忘記注冊(cè)全局組件或者拼錯(cuò)了組件名稱,從而拋出一個(gè)關(guān)于 Unknown custom element 的警告坞古。
源碼中與 Vue.config.ignoredElements 相關(guān)的主要有2個(gè)文件
// src/core/config.js // src/core/vdom/patch.js
- 'src/core/config.js' 中給定了默認(rèn)值备韧。
- 'src/core/vdom/patch.js'文件中,createElm 函數(shù)使用該值绸贡。即在vue在解析tag標(biāo)簽時(shí)盯蝴,是否忽略給定的 elements 毅哗。
- 類型:
-
Vue.config.keyCodes
文檔說明:
- 類型:
{ [key: string]: number | Array<number> }
- 默認(rèn)值:
{}
- 用法:
Vue.config.keyCodes = { v: 86, f1: 112, mediaPlayPause: 179, up: [38, 87] }
給 v-on 自定義鍵位別名听怕。
源碼中與 Vue.config.keyCodes 相關(guān)的主要有4個(gè)文件
// src/core/config.js // src/core/instance/proxy.js // src/core/instance/render.js // src/compiler/codegen/events.js
- 類型: