gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

vue為什么只有一個(gè)根標(biāo)簽

vue只有一個(gè)根標(biāo)簽的原因:1、從查找和遍歷DOM的角度來說,如果有多個(gè)根,那么查找和遍歷DOM的效率會(huì)很低;2、從Vue本身來說,如果說一個(gè)組件有多個(gè)入口多個(gè)根,那就意味著用戶的組件還可以進(jìn)一步拆分成多個(gè)組件,進(jìn)一步組件化,會(huì)降低代碼之間的耦合程度。

vue為什么只有一個(gè)根標(biāo)簽

本教程操作環(huán)境:windows7系統(tǒng)、vue3版,DELL G3電腦。

vue為什么要求組件模板只能有一個(gè)根元素?下面一起來了解一下。

Vue 實(shí)例

首先,我覺得這個(gè)問題要先從 Vue 的實(shí)例開始講起。Vue 的實(shí)例一般都是長成下面這個(gè)樣子,不同的只是 id 名的不同。

<div id="app"></div>
var vm = new Vue({     el: '#app',     data: {},     methods: {}     ... })

這就是 Vue 實(shí)例的基本結(jié)構(gòu),并不陌生。從這里可以看到,el 的指定是一個(gè) id 為 app 的 div 元素,Vue 實(shí)例接管了對(duì)它的控制,減少了我們的 DOM 操作,需要被 vm 控制的元素全部加在它的內(nèi)部。如果是需要控制不同的部分,這就需要多個(gè) Vue 的實(shí)例來實(shí)現(xiàn)。疑問就來了,為什么需要不同的 Vue 實(shí)例來接管?

入口問題

在 Vue 中指定 el 選項(xiàng)是給 Vue 實(shí)例指定一個(gè) SPA 入口,有可能你的頁面會(huì)長成像下面這樣:

<div id="app"></div> <div id="app1"></div> <div id="app2"></div>

Vue 實(shí)例其實(shí)并不知道哪一個(gè)是入口,它應(yīng)該接管哪一個(gè)部分,所以你要給它指定一個(gè)唯一的元素作為入口。每一個(gè)入口可以看作是一個(gè) Vue 的類,Vue 要把這個(gè)入口進(jìn)去的所有東西都取出來進(jìn)行輪循渲染一遍,再把它重新掛載回頁面中的 DOM 里面去。打給比方來說,一個(gè) Vue 實(shí)例只擁有一個(gè)鑰匙,一個(gè)鑰匙只能開一把鎖,但是頁面上有很多把鎖,如果你不說清楚它是哪把鎖的鑰匙,Vue 實(shí)例就不知道接下來要怎么做了。

當(dāng)然,這只是一個(gè)比較淺顯的理解。你可能會(huì)說,我指定幾個(gè)入口讓 Vue 實(shí)例去一個(gè)一個(gè)試就好了,我們往下看。

虛擬 DOM

“虛擬 DOM”是我們對(duì)由 Vue 組件樹建立起來的整個(gè) VNode 樹的稱呼

學(xué)習(xí) Vue 不得不說的就是2.0引入的Virtual DOM,引入虛擬 DOM 后,在框架的內(nèi)部將虛擬 DOM 樹型結(jié)構(gòu)與真實(shí) DOM 做了映射,讓我們不用再命令式的去操作 DOM。

引用里面的一張圖片:

vue為什么只有一個(gè)根標(biāo)簽

從這張圖可以看出來虛擬 DOM 的一個(gè)渲染過程,那我們?cè)倩氐奖疚牡脑掝}:為什么只能由一個(gè)根元素?
我們來看一個(gè)例子,假設(shè)你的 Vue 實(shí)例接管的 DOM 結(jié)構(gòu)長成這個(gè)樣子:

<div id="app">     <h1 id="h3">My title</h1>     <span>Content</span>     Other text     <!-- annotation text --> </div>

它在瀏覽器內(nèi)部的表現(xiàn)是一個(gè)這樣的 DOM 樹:

vue為什么只有一個(gè)根標(biāo)簽

原諒我畫圖技術(shù)差,不過我想展示的效果達(dá)到了。從這可以看出它是一個(gè)樹的結(jié)構(gòu),每個(gè)元素、文字、注釋都是一個(gè)節(jié)點(diǎn),虛擬 DOM 遵循的也是這樣的一個(gè)樹的數(shù)據(jù)結(jié)構(gòu)。

回到正題,我們的指定的 el 也就是整個(gè) DOM 結(jié)構(gòu)的根?,F(xiàn)在就很好說了,我們只有指定了唯一的 el 根元素,才能交給 Vue 實(shí)例在內(nèi)部通過 createElement 方法生成一個(gè)對(duì)應(yīng)的虛擬 DOM 結(jié)構(gòu)映射真實(shí)的 DOM 元素進(jìn)行操作渲染成真正的 HTML

換句話來說,可以把 el 對(duì)應(yīng)的元素理解成 Vue 接管部分中的一個(gè)頂級(jí)標(biāo)簽,就像基本的 HTML 結(jié)構(gòu)中,頂級(jí)標(biāo)簽是 <html></html>,只能有一個(gè)這樣的標(biāo)簽存在。對(duì)應(yīng)到 Vue 中也是這樣,如果你給它兩個(gè)頂級(jí)標(biāo)簽,那么對(duì)應(yīng)的 DOM 結(jié)構(gòu)就無法生成了,這也就解釋了之前的疑惑:為什么不能指定多個(gè)入口讓 Vue 實(shí)例一個(gè)個(gè)的試。

不知道我這樣的解釋有沒有說明白這個(gè)問題,如果沒清楚我們下面再來看看。

vue-cli

現(xiàn)在實(shí)際的項(xiàng)目開發(fā)中,使用腳手架 vue-cli 開發(fā)居多,我們來看看。

vue-cli 的形式是單文件組件,一個(gè) .vue 頁面的基本結(jié)構(gòu)是這樣的:

<template>   <div></div> </template>  <script> export default {  } </script>  <style>  </style>

在這里,<template> 標(biāo)簽下也只能有一個(gè)根元素 div,這是為什么?

在說這個(gè)話題之前,我們需要了解 H5 新標(biāo)簽 <template> 的一些特性,可以參考文檔,它保證了內(nèi)部的內(nèi)容有效但不會(huì)被渲染。vue-cli 本質(zhì)上是會(huì)把 .vue 文件通過 webpack 配置打包成一系列的 js/css 文件注入到一個(gè) html 文件中交給瀏覽器進(jìn)行解釋執(zhí)行,我們看一個(gè)打包好的文件目錄:

vue為什么只有一個(gè)根標(biāo)簽

這也就是說,每個(gè) .vue 文件都會(huì)是一個(gè) Vue 的實(shí)例,而 <template> 標(biāo)簽中的內(nèi)容就是 Vue 實(shí)例接管形成虛擬 DOM 的那部分內(nèi)容。如果在 template 下有多個(gè) div,那么虛擬 DOM 樹就沒辦法生成了。

問題抽象并回答

其實(shí)這個(gè)問題歸結(jié)到最后,也可以抽象為一個(gè)問題:為什么抽象出來的 DOM 樹只能有一個(gè)根?

  • 從查找和遍歷的角度來說,如果有多個(gè)根,那么我們的查找和遍歷的效率會(huì)很低。

    如果一個(gè)樹有多個(gè)根,說明可以優(yōu)化,肯定會(huì)有一個(gè)節(jié)點(diǎn)是可以訪問到所有的節(jié)點(diǎn),那這個(gè)節(jié)點(diǎn)就會(huì)成為新的根節(jié)點(diǎn)。

  • 再從 Vue 本身來說,如果說一個(gè)組件有多個(gè)入口多個(gè)根,那不就意味著你的組件還可以進(jìn)一步拆分成多個(gè)組件,進(jìn)一步組件化,降低代碼之間的耦合程度。

【相關(guān)視頻教程推薦:vue視頻教程、web前端入門】

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
免费看污污网站| 无码人妻精品一区二区蜜桃百度| 欧美一级免费在线| 五月天激情播播| 国产又黄又猛又粗又爽的视频| 久久久久久久午夜| 18禁免费无码无遮挡不卡网站| 久久精品xxx| 国产精品又粗又长| 一女被多男玩喷潮视频| 欧美日韩国产精品激情在线播放| 日韩av一二三四区| av片中文字幕| 538任你躁在线精品免费| 日本 片 成人 在线| 爱豆国产剧免费观看大全剧苏畅 | 自拍日韩亚洲一区在线| 精品视频在线观看一区| 黄色片一级视频| 中文字幕第88页| 日韩高清第一页| 18视频在线观看娇喘| 国产在线视频在线| 欧美日韩亚洲一二三| 国产高潮免费视频| 天天操精品视频| 成人一级生活片| 久久久久狠狠高潮亚洲精品| www.涩涩涩| 日韩精品在线观看av| 50路60路老熟妇啪啪| www.成人黄色| 日本www在线视频| 57pao国产成永久免费视频| 黄色录像特级片| 欧美亚洲日本在线观看| 日韩欧美色视频| 美女av免费在线观看| 中文字幕66页| 人妻av中文系列| 日日夜夜精品视频免费观看| 777精品久无码人妻蜜桃| 日韩爱爱小视频| 欧美一级片免费播放| 天堂av8在线| 精品国产免费av| 波多野结衣av一区二区全免费观看| 国产午夜伦鲁鲁| www亚洲国产| av亚洲天堂网| 日本免费观看网站| 自拍日韩亚洲一区在线| 熟妇熟女乱妇乱女网站| 亚洲综合在线网站| 成人综合视频在线| 激情成人开心网| 乱子伦一区二区| 爽爽爽在线观看| 成人精品小视频| 免费看的黄色大片| 国产freexxxx性播放麻豆| 亚洲高清av一区二区三区| 最近中文字幕一区二区| 久久久久久久激情| 丝袜人妻一区二区三区| 男人日女人的bb| 青青草原播放器| 中国一级黄色录像| 无码毛片aaa在线| 51xx午夜影福利| 欧美交换配乱吟粗大25p| 亚洲小说欧美另类激情| avove在线观看| 大胆欧美熟妇xx| 日韩国产成人无码av毛片| 欧美交换配乱吟粗大25p| 四虎精品欧美一区二区免费| 三日本三级少妇三级99| 国内自拍中文字幕| 少妇人妻无码专区视频| 99热自拍偷拍| 激情五月婷婷久久| 午夜剧场在线免费观看| 国产福利片一区二区| 国产青草视频在线观看| 国产精品视频一区二区三区四区五区| 国产午夜伦鲁鲁| 中文字幕亚洲欧洲| 亚洲自拍偷拍一区二区三区| 污污污污污污www网站免费| 成人毛片一区二区| 老司机午夜av| 亚洲欧美日韩网站| 国产玉足脚交久久欧美| 北条麻妃视频在线| 色婷婷综合在线观看| 我的公把我弄高潮了视频| 九一精品在线观看| 老司机午夜网站| 久久网站免费视频| 日韩欧美中文在线视频| 欧美日韩性生活片| 91精品国产毛片武则天| 鲁一鲁一鲁一鲁一澡| 国产91色在线观看| 18视频在线观看娇喘| 97公开免费视频| 男人草女人视频| 91亚洲免费视频| 69堂免费视频| 免费网站永久免费观看| 国产二区视频在线| av在线网址导航| 北条麻妃在线视频观看| www.色.com| 在线不卡一区二区三区| 北条麻妃在线视频观看| 玖玖精品在线视频| 久热在线视频观看| 色多多视频在线播放| 日韩激情视频一区二区| 红桃视频一区二区三区免费| 超碰影院在线观看| 欧美精品一区二区三区三州| av动漫免费观看| 九九热免费在线观看| 久久久久久久久久久福利| 成人免费性视频| 日韩久久久久久久久久久久| 老司机av福利| 超碰91在线播放| 国产又粗又猛大又黄又爽| 精品亚洲视频在线| 图片区乱熟图片区亚洲| 17c国产在线| 国产一区二区在线观看免费视频| 啊啊啊国产视频| 韩国中文字幕av| www.超碰97.com| 三级性生活视频| 性鲍视频在线观看| 亚洲精品偷拍视频| 国产成人免费高清视频| 神马午夜伦理影院| 妞干网在线播放| 凹凸国产熟女精品视频| 50路60路老熟妇啪啪| 国产原创精品在线| 污污的视频免费观看| 污免费在线观看| 成人短视频在线观看免费| 国产在线播放观看| 欧洲av无码放荡人妇网站| 日韩网址在线观看| 在线观看免费av网址| 五月婷婷六月丁香激情| 日韩精品第1页| 国产美女无遮挡网站| 色综合天天色综合| 亚洲五码在线观看视频| 国产l精品国产亚洲区久久| 久久婷五月综合| 日本大胆人体视频| 日本成人在线免费视频| 91日韩精品视频| 国产欧美日韩小视频| 日韩中文字幕组| 9色视频在线观看| 成人在线观看黄| 免费在线看黄色片| 国产一级不卡毛片| 欧美视频在线第一页| 不卡影院一区二区| 日产精品久久久久久久蜜臀| 一区二区三区韩国| 日韩日韩日韩日韩日韩| 日韩av片网站| 久久无码高潮喷水| a级片一区二区| 青青草久久伊人| 久久婷婷国产91天堂综合精品| 在线视频一二三区| 中文字幕视频在线免费观看| 青青青青草视频| 小泽玛利亚av在线| 亚洲理论中文字幕| 在线视频日韩一区| 波多野结衣家庭教师视频| 国产免费裸体视频| 做爰高潮hd色即是空| 香蕉视频网站入口| 国产l精品国产亚洲区久久| 黄色激情在线视频| 欧美久久在线观看| 色哟哟免费网站| 国产又粗又长又爽视频| 欧美日韩亚洲国产成人| 日本超碰在线观看| 色一情一区二区三区| 中文字幕线观看|