Vue選項/DOM
el
-
類型:
string | Element
-
限制:只在由
new
創建的實例中遵守。 -
詳細:
提供一個在頁面上已存在的 DOM 元素作爲 Vue 實例的掛載目標。可以是 CSS 選擇器,也可以是一個 HTMLElement 實例。
在實例掛載之後,元素可以用vm.$el
訪問。
如果在實例化時存在這個選項,實例將立即進入編譯過程,否則,需要顯式調用vm.$mount()
手動開啓編譯。
提供的元素只能作爲掛載點。不同於 Vue 1.x,所有的掛載元素會被 Vue 生成的 DOM 替換。因此不推薦掛載 root 實例到
<html>
或者<body>
上。
如果render
函數和template
屬性都不存在,掛載 DOM 元素的 HTML 會被提取出來用作模板,此時,必須使用 Runtime + Compiler 構建的 Vue 庫。
template
- 類型:
string
- 詳細:
一個字符串模板作爲 Vue 實例的標識使用。模板將會 替換 掛載的元素。掛載元素的內容都將被忽略,除非模板的內容有分發插槽。
如果值以#
開始,則它將被用作選擇符,並使用匹配元素的 innerHTML 作爲模板。常用的技巧是用<script type="x-template">
包含模板。
出於安全考慮,你應該只使用你信任的 Vue 模板。避免使用其他人生成的內容作爲你的模板。
如果 Vue 選項中包含渲染函數,該模板將被忽略。
render
- 類型:
(createElement: () => VNode) => VNode
- 詳細:
字符串模板的代替方案,允許你發揮 JavaScript 最大的編程能力。該渲染函數接收一個createElement
方法作爲第一個參數用來創建VNode
。
如果組件是一個函數組件,渲染函數還會接收一個額外的context
參數,爲沒有實例的函數組件提供上下文信息。
Vue 選項中的render
函數若存在,則 Vue 構造函數不會從template
選項或通過 el 選項指定的掛載元素中提取出的 HTML 模板編譯渲染函數。
renderError
- 類型:
(createElement: () => VNode, error: Error) => VNode
- 詳細:
只在開發者環境下工作。
當render
函數遭遇錯誤時,提供另外一種渲染輸出。其錯誤將會作爲第二個參數傳遞到renderError
。這個功能配合 hot-reload 非常實用。
示例:
new Vue({
render (h) {
throw new Error('oops')
},
renderError (h, err) {
return h('pre', { style: { color: 'red' }}, err.stack)
}
}).$mount('#app')