前言:在開發前段頁面使用vue時,我們能經常看到template標籤。這裡粗略講下自己對vue中template理解和使用。
1. 先了解vue
vue.js是一個輕巧、高效能、殼元件畫的MVVM庫。Vue的兩大特徵:響應式程式設計、元件化
vue的優勢:輕量級框架、簡單易學、雙向資料繫結、元件化、檢視、資料和結構分離、虛擬DOM、執行速度快
2. dom相關知識
2.1 html中的dom
我們知道HTML中所有的內容都是節點組成的。
當網頁被載入時,瀏覽器會建立頁面的文件物件模型(Document Object Model)。
通過DOM,可以訪問所有的HTML元素,連同它們的文字和屬性,可以進行修改、刪除以及建立新的元素。
HTML文件中的所有元素(節點)組成了一個文件樹(節點樹、DOM樹)
2.2 vdom
相比頻繁的手動去操作dom而帶來的效能問題,vdom(virtual-dom)很好的將dom做了一層對映關係,將我們本需要直接進行dom的一系列操作對映到了vdom中。
在vdom上定義了關於真實dom的一些關鍵資訊,而vdom完全使用js去實現的,和宿主瀏覽器沒有任何聯絡。
此外得益於js的執行速度,將原本需要在真實dom進行的建立節點,刪除節點,新增節點等一系列複雜的dom操作全部放到vdom中進行,這樣就通過操作vdom來提高直接操作的dom的效率和效能。
2.3 vue和vdom的關係
在Vue的整個應用生命週期當中,每次需要更新檢視的時候便會使用vdom。
3. template
3.1 HTML5中的template
在HTML5中,templae用來宣告"模板元素"。
<script type="text/template">複製程式碼
template性質:
- 標籤內容隱藏性,template自帶標籤內容隱藏的性質。
- 標籤位置任意性,可以在head標籤中,也可以在body標籤中或者frameset標籤中。
- childNodes無效性,可以使用template.innerHTML獲取完整的HTML片段;template.content會返回一個文件片段,可理解為另外一個docuent,獲取“偽子元素”。
3.2 vue中的template
3.2.1 生命週期
根據vue生命週期中所表示的,找到el中有template配置項,則會用template配置項的自定義元件去替換html中的el。但是這個template不是<template/>自帶標籤。template配置項專門用來替換el的。值可以是"<div></div>",也可以是全域性或區域性元件。
3.2.2 作為元件或者是字串
template:"<four_component/>"
複製程式碼
作為元件時需要先註冊;不是元件,則設定成字串
template:"<div><div/>"
複製程式碼
3.2.3 作為插槽使用
當我們直接應用元件時,因為vue無法直接進行渲染而導致元件失效
<child-component>想要輸出的內容</child-component>
複製程式碼
如果要使用元件標籤,我們就可以利用template標籤,加上slot插槽屬性,組成<template slot="插槽名"></template>
<child-component>
<template slot="插槽名">
想要輸出的內容
</template>
</child-component
複製程式碼