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

站長資訊網
最全最豐富的資訊網站

vue為什么只有一個根標簽

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

vue為什么只有一個根標簽

本教程操作環境:windows7系統、vue3版,DELL G3電腦。

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

Vue 實例

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

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

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

入口問題

在 Vue 中指定 el 選項是給 Vue 實例指定一個 SPA 入口,有可能你的頁面會長成像下面這樣:

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

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

當然,這只是一個比較淺顯的理解。你可能會說,我指定幾個入口讓 Vue 實例去一個一個試就好了,我們往下看。

虛擬 DOM

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

學習 Vue 不得不說的就是2.0引入的Virtual DOM,引入虛擬 DOM 后,在框架的內部將虛擬 DOM 樹型結構與真實 DOM 做了映射,讓我們不用再命令式的去操作 DOM。

引用里面的一張圖片:

vue為什么只有一個根標簽

從這張圖可以看出來虛擬 DOM 的一個渲染過程,那我們再回到本文的話題:為什么只能由一個根元素?
我們來看一個例子,假設你的 Vue 實例接管的 DOM 結構長成這個樣子:

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

它在瀏覽器內部的表現是一個這樣的 DOM 樹:

vue為什么只有一個根標簽

原諒我畫圖技術差,不過我想展示的效果達到了。從這可以看出它是一個樹的結構,每個元素、文字、注釋都是一個節點,虛擬 DOM 遵循的也是這樣的一個樹的數據結構。

回到正題,我們的指定的 el 也就是整個 DOM 結構的根。現在就很好說了,我們只有指定了唯一的 el 根元素,才能交給 Vue 實例在內部通過 createElement 方法生成一個對應的虛擬 DOM 結構映射真實的 DOM 元素進行操作渲染成真正的 HTML

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

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

vue-cli

現在實際的項目開發中,使用腳手架 vue-cli 開發居多,我們來看看。

vue-cli 的形式是單文件組件,一個 .vue 頁面的基本結構是這樣的:

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

在這里,<template> 標簽下也只能有一個根元素 div,這是為什么?

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

vue為什么只有一個根標簽

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

問題抽象并回答

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

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

    如果一個樹有多個根,說明可以優化,肯定會有一個節點是可以訪問到所有的節點,那這個節點就會成為新的根節點。

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

【相關視頻教程推薦:vue視頻教程、web前端入門】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
午夜影院免费版| 亚洲小视频在线播放| 妞干网这里只有精品| 国产一区视频免费观看| 亚洲国产一二三精品无码| 欧美视频第一区| 亚洲精品国产suv一区88| 中文字幕免费高清在线| 女人喷潮完整视频| 蜜桃视频一区二区在线观看| 国产wwwxx| 欧美v在线观看| 国产精品三级一区二区| 在线播放黄色av| 最新中文字幕免费视频| 免费看毛片的网址| 国产精品自拍合集| 国产精品亚洲天堂| jizz18女人| 国产又黄又猛又粗| 亚洲视频在线a| 虎白女粉嫩尤物福利视频| 农民人伦一区二区三区| 国产精品美女在线播放| 亚洲高清视频免费| mm131国产精品| jizz欧美性11| 日韩一区二区三区久久| 精品久久久久久中文字幕2017| 极品美女扒开粉嫩小泬| 一卡二卡三卡视频| 国产亚洲黄色片| 国内精品在线观看视频| 中文字幕无码精品亚洲35| 久久免费视频3| 国产女女做受ⅹxx高潮| 激情六月丁香婷婷| 久久国产激情视频| 国产乱码一区二区三区四区| 亚洲怡红院在线| 2025韩国大尺度电影| 超级碰在线观看| 免费看日本毛片| 青青在线免费观看视频| jizz18女人| 国产手机视频在线观看| 中文字幕在线中文| 2022亚洲天堂| 最新免费av网址| 久久综合久久久久| www.超碰com| 蜜桃视频成人在线观看| 青青青国产在线观看| 欧洲黄色一级视频| 黄色片免费网址| 国产精品裸体瑜伽视频| 国产三级三级三级看三级| 蜜桃福利午夜精品一区| 青青草国产免费| 99re精彩视频| 日韩欧美一区二| 国产一二三四五| 另类小说第一页| 欧美交换配乱吟粗大25p| 国内外免费激情视频| 亚洲免费视频播放| 日韩在线xxx| 老司机午夜网站| 男人天堂成人在线| 蜜臀av性久久久久蜜臀av| 天天操天天摸天天爽| 国产一区二区四区| 亚洲精品乱码久久久久久动漫| 黄色www网站| 男女裸体影院高潮| 久久精品国产露脸对白| 日本a级片免费观看| 大片在线观看网站免费收看| 日韩精品视频一二三| 一区二区传媒有限公司| 国产一区二区三区乱码| 国产精品亚洲天堂| 日本黄色的视频| 少妇高清精品毛片在线视频| 妺妺窝人体色www看人体| 波多野结衣三级在线| 向日葵污视频在线观看| 日韩欧美在线免费观看视频| 久久婷婷五月综合色国产香蕉| av 日韩 人妻 黑人 综合 无码| 日本中文字幕二区| 欧美成人三级在线播放| www.99r| 成人中文字幕av| 天天操天天摸天天爽| 噼里啪啦国语在线观看免费版高清版| av日韩一区二区三区| 欧美精品一区二区性色a+v| 欧美自拍小视频| 日韩xxxx视频| 亚洲AV无码成人精品一区| 在线观看中文av| 成人中文字幕av| aa免费在线观看| 丁香婷婷综合激情| 欧美日韩亚洲国产成人| 国产午夜大地久久| 亚洲色欲久久久综合网东京热| 色天使在线观看| 91女神在线观看| 自拍偷拍21p| 日韩欧美视频免费在线观看| 少妇熟女一区二区| 中文字幕亚洲影院| www.99r| 国产裸体舞一区二区三区| 激情五月婷婷久久| 91亚洲精品久久久蜜桃借种| 欧美日韩在线观看不卡| 亚洲一二三区av| 第一区免费在线观看| 大陆极品少妇内射aaaaaa| 日韩中文字幕在线不卡| 香港三级日本三级a视频| 日韩中文在线字幕| av片在线免费| 亚洲三级在线观看视频| 日本丰满大乳奶| 免费高清一区二区三区| 免费无遮挡无码永久视频| 国产视频一区二区三区在线播放 | 我看黄色一级片| 欧美精品色婷婷五月综合| 日本爱爱免费视频| 男人的天堂最新网址| 在线观看av免费观看| 日韩中文字幕在线不卡| 亚洲人精品午夜射精日韩| 黄色国产小视频| 手机版av在线| 97超碰在线人人| 中文字幕av专区| 欧美做受777cos| 国产精品免费成人| 亚洲免费一级视频| av高清在线免费观看| 三级在线视频观看| 日韩精品第1页| 日本三级免费观看| 免费看污污视频| 久久久久久综合网| av黄色在线网站| 91香蕉视频免费看| 激情网站五月天| 99热这里只有精品免费| 一级网站在线观看| 日日摸日日碰夜夜爽av| 午夜免费一级片| 久久精品一区二| 8x8ⅹ国产精品一区二区二区| 中文字幕亚洲乱码| 欧美在线观看www| 人人妻人人澡人人爽欧美一区| 日韩在线第三页| 可以看毛片的网址| 国产精品一色哟哟| 亚洲欧美一区二区三区不卡| 中文字幕日本最新乱码视频| 国产人妻人伦精品| 国模私拍视频在线观看| 日本 片 成人 在线| 国产精品亚洲αv天堂无码| 日韩免费在线观看av| 欧美专区第二页| 国产无限制自拍| 亚洲色成人一区二区三区小说| 成年人视频大全| 国内av免费观看| 色偷偷中文字幕| 久久成年人网站| 国内自拍视频网| 在线观看的毛片| 成人午夜激情av| 久久精品影视大全| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 男人添女荫道口图片| 欧美一二三不卡| 无码人妻精品一区二区蜜桃网站| 三级黄色片播放| 一区二区三区视频网| 亚洲av毛片在线观看| 天天干天天曰天天操| 欧美国产在线一区| 久久久成人精品一区二区三区| 日本黄网站色大片免费观看| 欧美高清中文字幕| 黄网站欧美内射| www.日日操| 国产精品啪啪啪视频| 天天夜碰日日摸日日澡性色av|