vue實(shí)例配置對象中el、template、render的用法
三者優(yōu)先級
render > template > el
el
- 只在用 new 創(chuàng)建實(shí)例時(shí)生效
- 提供一個(gè)在頁面上已存在的 DOM 元素作為 Vue 實(shí)例的掛載目標(biāo)。
- 可以是 CSS 選擇器,也可以是一個(gè) HTMLElement 實(shí)例
- 在實(shí)例掛載之后,元素可以用 vm.$el 訪問
template
- 一個(gè)字符串模板作為 Vue 實(shí)例的標(biāo)識使用。
- 模板將會替換掛載的元素。
- 掛載元素的內(nèi)容都將被忽略,除非模板的內(nèi)容有分發(fā)插槽
render
- 字符串模板的代替方案,允許你發(fā)揮 JavaScript 最大的編程能力。
- 該渲染函數(shù)接收一個(gè) createElement 方法作為第一個(gè)參數(shù)用來創(chuàng)建 VNode
三者的聯(lián)系
- 當(dāng)Vue選項(xiàng)對象中有render渲染函數(shù)時(shí),Vue構(gòu)造函數(shù)將直接使用渲染函數(shù)渲染DOM樹
- 當(dāng)選項(xiàng)對象中沒有render渲染函數(shù)時(shí),Vue構(gòu)造函數(shù)首先通過將template模板編譯生成渲染函數(shù),然后再渲染DOM樹
- 當(dāng)Vue選項(xiàng)對象中既沒有render渲染函數(shù),也沒有template模板時(shí),會通過el屬性獲取掛載元素的outerHTML來作為模板,并編譯生成渲染函數(shù)
進(jìn)行DOM樹的渲染時(shí),render渲染函數(shù)的優(yōu)先級最高,template次之且需編譯成渲染函數(shù),而掛載點(diǎn)el屬性對應(yīng)的元素若存在,則在前兩者均不存在時(shí),其outerHTML才會用于編譯與渲染
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div class="vapp-1">{{ info }}</div>
<div class="vapp-2">{{ info }}</div>
<div class="vapp-3">{{ info }}</div>
<script src="./js/vue.js"></script>
<script>
new Vue({
el: ".vapp-1",
data: {
info: "這是通過el屬性獲取掛載元素的outerHTML方式渲染。",
},
template: "<div>這是template屬性模板渲染。</div>",
render: function (h) {
return h("div", {}, "這是render屬性方式渲染。");
},
});
new Vue({
el: ".vapp-2",
data: {
info: "這是通過el屬性獲取掛載元素的outerHTML方式渲染。",
},
template: "<div>這是template屬性模板渲染。</div>",
});
new Vue({
el: ".vapp-3",
data: {
info: "這是通過el屬性獲取掛載元素的outerHTML方式渲染。",
},
});
</script>
</body>
</html>
<!-- 結(jié)果-->
這是render屬性方式渲染。
這是template屬性模板渲染。
這是通過el屬性獲取掛載元素的outerHTML方式渲染。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue實(shí)現(xiàn)todolist單頁面應(yīng)用
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)todolist單頁面應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Vue3?Radio單選切換展示不同內(nèi)容實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue3?Radio單選切換展示不同內(nèi)容,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
一文詳解Vue的響應(yīng)式原則與雙向數(shù)據(jù)綁定
使用 Vue.js 久了,還是不明白響應(yīng)式原理和雙向數(shù)據(jù)綁定的區(qū)別?今天,我們就一起來學(xué)習(xí)一下,將解釋它們的區(qū)別,快跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Vue3的ts報(bào)錯(cuò):類型"{}"上不存在屬性"xxx"的兩種徹底根治解決方法
這篇文章主要給大家介紹了關(guān)于Vue3的ts報(bào)錯(cuò):類型"{}"上不存在屬性"xxx"的兩種徹底根治解決方法,這是最近做項(xiàng)目中遇到的一個(gè)問題,這里給大家總結(jié)下解決辦法,需要的朋友可以參考下2023-08-08
vue事件監(jiān)聽函數(shù)on中的this指針域使用
這篇文章主要介紹了vue事件監(jiān)聽函數(shù)on中的this指針域使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue如何實(shí)現(xiàn)接口統(tǒng)一管理
這篇文章主要介紹了vue如何實(shí)現(xiàn)接口統(tǒng)一管理,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

