Vue.js 2.x API 知識梳理(一) 全局配置
Vue.js 2.x API 知識梳理(一)
全局配置
Vue.config是一個對象,包含Vue的全局配置。可以在啟動應用之前修改指定屬性。
這里不是指的@vue/cli的vue.config.js。
Demo源碼
| 屬性 | 類型 | 默認值 | 作用 |
|---|---|---|---|
| silent | Boolean | false | 隱藏vue所有的日志與警告 |
| optionMergeStrategies | {} | 自定義合并策略的選項 | |
| devtools | Boolean | true(production: false) | 是否允許vue-devtools檢查代碼 |
| errorHandler | Function | undefined | 指定組件的渲染和觀察期間未捕獲錯誤的處理函數 |
| warnHandler | Function | undefined | vue開發環境下運行時警告處理函數 |
| ignoredElements | Array<String | RegExp> | [] | 要使vue忽略的自定義元素 |
| keyCodes | { [key: String]: number | Array |
{} | 給v-on自定義鍵位別名 |
| performance | Boolean | false | 設為true時開發環境下在瀏覽器Performance面板啟用對組件初始化、編譯和打補丁的性能追蹤 |
| productionTip | Boolean | true | 設置為false以阻止vue在啟動時生成生產提示 |
silent
Vue.config.silent = true;

optionMergeStrategies
服務于Vue的mixin,用以實現自定義混入規則。
合并策略選項分別接收在父實例和子實例上定義的該選項的值作為第一個和第二個參數,Vue實例上下文被作為第三個參數傳入。
參見Vue 混入。
devtools
配置是否允許vue-devtools檢查代碼。
開發版本默認為true,生產版本默認為false。
errorHandler
指定組件的渲染和觀察期間未捕獲錯誤的處理函數。
這個處理函數被調用時,可獲取錯誤信息和Vue實例。
Vue.config.errorHandler = function (err, vm, info) {
// info 是Vue特定的錯誤信息,比如錯誤所在的生命周期鉤子
console.log(err);
console.log(vm);
console.log(info);
};
new Vue({
methods: {
myGetter() {
throw new Error('Bad!');
}
},
created() {
this.myGetter();
}
});
運行可見下圖:

throw的錯誤沒有被瀏覽器捕獲,而是調用了errorHandler,并打印出了三個參數。
以下文本摘自文檔:
從
2.2.0起,這個鉤子也會捕獲組件生命周期鉤子里的錯誤。同樣的,當這個鉤子是undefined時,被捕獲的錯誤會通過console.error輸出而避免應用崩潰。
從2.4.0起,這個鉤子也會捕獲 Vue 自定義事件處理函數內部的錯誤了。
從2.6.0起,這個鉤子也會捕獲v-onDOM 監聽器內部拋出的錯誤。另外,如果任何被覆蓋的鉤子或處理函數返回一個Promise鏈 (例如async函數),則來自其Promise鏈的錯誤也會被處理。
錯誤追蹤服務 Sentry 和 Bugsnag 都通過此選項提供了官方支持。
warnHandler
為Vue的運行時警告賦予一個自定義處理函數。
只在開發環境下生效。
<div id="app">
<p>{{ Hello }}</p>
</div>
<script type="text/javascript">
Vue.config.warnHandler = function (msg, vm, trace) {
// trace 是組件的繼承關系追蹤
console.log(msg);
console.log(vm);
console.log(trace);
};
new Vue({
el: '#app'
});
</script>
運行結果如圖:

可以看到即便不設置silent屬性,Vue的警告也不再控制臺拋出錯誤了,而是調用了warnHandler方法。
ignoredElements
使Vue忽略在Vue之外定義的自定義元素。
如果定義了第三方自定義元素而又未設置忽略,Vue會解析這些元素從而拋出錯誤。
Vue.config.ignoredElements = [
'my-custom-web-component',
'another-web-component',
// 用一個 `RegExp` 忽略所有“ion-”開頭的元素
// 僅在 2.5+ 支持
/^ion-/
]
keyCodes
給v-on自定義鍵位別名。
<div id="app">
<ul>
<li>
<label><input type="text" placeholder="focus & press [v]" @keyup.v="keyUpHandler"></label>
</li>
<li>
<label><input type="text" placeholder="focus & press [silent]" @keyup.media-silent="keyUpHandler"></label>
</li>
<li>
<label><input type="text" placeholder="focus & press [↑|w]" @keyup.forward="keyUpHandler"></label>
</li>
</ul>
</div>
<script type="text/javascript">
Vue.config.keyCodes = {
v: 86,
'media-silent': 173,
forward: [38, 87],
back: [40, 83],
left: [37, 65],
right: [39, 68]
};
new Vue({
el: '#app',
methods: {
keyUpHandler(e) {
console.log(e);
}
}
});
</script>
執行效果:

這里補充一下鍵位碼的對照表:
字母和數字鍵的鍵碼
| 按鍵 | 鍵碼 | 按鍵 | 鍵碼 | 按鍵 | 鍵碼 | 按鍵 | 鍵碼 | |||
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 48 | A | 65 | K | 75 | U | 85 | |||
| 1 | 49 | B | 66 | L | 76 | V | 86 | |||
| 2 | 50 | C | 67 | M | 77 | W | 87 | |||
| 3 | 51 | D | 68 | N | 78 | X | 88 | |||
| 4 | 52 | E | 69 | O | 79 | Y | 89 | |||
| 5 | 53 | F | 70 | P | 80 | Z | 90 | |||
| 6 | 54 | G | 71 | Q | 81 | |||||
| 7 | 55 | H | 72 | R | 82 | |||||
| 8 | 56 | I | 73 | S | 83 | |||||
| 9 | 57 | J | 74 | T | 84 |
小鍵盤
| 按鍵 | 鍵碼 | 按鍵 | 鍵碼 | |
|---|---|---|---|---|
| 0 | 96 | * | 106 | |
| 1 | 97 | + | 107 | |
| 2 | 98 | Enter | 108 | |
| 3 | 99 | - | 109 | |
| 4 | 100 | . | 110 | |
| 5 | 101 | / | 111 | |
| 6 | 102 | |||
| 7 | 103 | |||
| 8 | 104 | |||
| 9 | 105 |
功能鍵
| 按鍵 | 鍵碼 | 按鍵 | 鍵碼 | |
|---|---|---|---|---|
| F1 | 112 | F7 | 118 | |
| F2 | 113 | F8 | 119 | |
| F3 | 114 | F9 | 120 | |
| F4 | 115 | F10 | 121 | |
| F5 | 116 | F11 | 122 | |
| F6 | 117 | F12 | 123 |
控制鍵
| 按鍵 | 鍵碼 | 按鍵 | 鍵碼 | 按鍵 | 鍵碼 | 按鍵 | 鍵碼 | |||
|---|---|---|---|---|---|---|---|---|---|---|
| BackSpace | 8 | Esc | 27 | Right Arrow | 39 | -_ | 189 | |||
| Tab | 9 | Spacebar | 32 | Down Arrow | 40 | .> | 190 | |||
| Clear | 12 | Page Up | 33 | Insert | 45 | /? | 191 | |||
| Enter | 13 | Page Down | 34 | Delete | 46 | `~ | 192 | |||
| Shift | 16 | End | 35 | Num Lock | 144 | [{ | 219 | |||
| Control | 17 | Home | 36 | ;: | 186 | |\ | 220 | |||
| Alt | 18 | Left Arrow | 37 | =+ | 187 | ]} | 221 | |||
| Cape Lock | 20 | Up Arrow | 38 | ,< | 188 | '" | 222 |
多媒體鍵
| 按鍵 | 鍵碼 |
|---|---|
| search | 170 |
| collect | 171 |
| browser | 172 |
| silent | 173 |
| volume down | 174 |
| volume up | 175 |
| pause | 179 |
| 180 |
performance
設置為 true 以在瀏覽器開發工具的性能/時間線面板中啟用對組件初始化、編譯、渲染和打補丁的性能追蹤。只適用于開發模式和支持 performance.mark API 的瀏覽器上。
性能這塊做得不是很多,暫時沒有看出如何使用。
productionTip
設置為 false 以阻止 vue 在啟動時生成生產提示。
Vue.config.productionTip = false;
如果不設置此屬性,控制臺可以看到vue給出的生產提示:

添加以后就沒有了。
參見原文。
PM 4, July 24, 2019

浙公網安備 33010602011771號