兩個(gè)相同組件產(chǎn)生類似的 DOM 結(jié)構(gòu),不同的組件產(chǎn)生不同的 DOM 結(jié)構(gòu); 對(duì)于同一層次的一組子節(jié)點(diǎn),它們可以通過(guò)唯一的 id 進(jìn)行區(qū)分。算法上的優(yōu)化是 React 整個(gè)界面 Render 的基礎(chǔ),保證了整體界面渲染的性能。
創(chuàng)新互聯(lián)基于成都重慶香港及美國(guó)等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)雙線服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
虛擬DOM的解決方式是,通過(guò)狀態(tài)生產(chǎn)一個(gè)虛擬狀態(tài)Dom,然后根據(jù)虛擬節(jié)點(diǎn)進(jìn)行渲染,假如是首次渲染的就會(huì)直接渲染,但是二次往后的話就是進(jìn)行虛擬狀態(tài)樹(shù)的對(duì)比,只更新不同的地方。
原理 當(dāng)dom渲染時(shí),會(huì)createElm創(chuàng)建元素,創(chuàng)建元素后會(huì)進(jìn)行初始化,初始化組件的時(shí)候內(nèi)部還有組件,會(huì)不停的去渲染,所以它的渲染順序是先父后子,完成的順序是先子后父。
虛擬DOM工作原理: 在Vue中,每個(gè)組件都有一個(gè)對(duì)應(yīng)的虛擬DOM樹(shù),它是一個(gè)以組件根節(jié)點(diǎn)為起點(diǎn)的JavaScript對(duì)象。 當(dāng)數(shù)據(jù)發(fā)生改變時(shí),Vue會(huì)重新計(jì)算虛擬DOM樹(shù)的結(jié)構(gòu),并和舊的虛擬DOM樹(shù)進(jìn)行比較。
Tree 匹配 DOM Tree 進(jìn)行定位坐標(biāo)和大小,是否換行,以及 position、overflow、z-index 等等屬性,這個(gè)過(guò)程稱為 Flow 或 Layout 。最終通過(guò)調(diào)用Native GUI 的 API 繪制網(wǎng)頁(yè)畫(huà)面的過(guò)程稱為 Paint 。
具體來(lái)說(shuō),React通過(guò)以下幾個(gè)步驟來(lái)實(shí)現(xiàn)Virtual DOM機(jī)制: 當(dāng)數(shù)據(jù)發(fā)生變化時(shí),React會(huì)創(chuàng)建一個(gè)新的Virtual DOM樹(shù)。 React會(huì)將新舊兩個(gè)Virtual DOM樹(shù)進(jìn)行比較,并找出兩者之間的差異。
1、圖形渲染流水線支持從頂點(diǎn)開(kāi)始進(jìn)行繪制(在流水線中,頂點(diǎn)會(huì)被處理生成紋理),也支持直接使用紋理(圖片)進(jìn)行渲染。
2、GPU的渲染流程不再追溯,當(dāng)前使用Metal來(lái)進(jìn)行渲染,因此Metal的渲染流程可以看 十Metal - 初探 。
3、iOS頁(yè)面UI渲染其實(shí)是由CPU和GPU同時(shí)協(xié)作完成的。順便查了下屏幕渲染,分為三種 離屏渲染(Off-Screen Rendering):就是GPU在當(dāng)前屏幕以外開(kāi)辟一個(gè)另外的緩沖區(qū)進(jìn)行渲染操作。
4、GPU 圖形渲染流程的具體實(shí)現(xiàn)可分為六個(gè)階段,如下圖所示。第一階段,頂點(diǎn)著色器 。 該階段的輸入是 頂點(diǎn)數(shù)據(jù)( Vertex Data )數(shù)據(jù),比如以數(shù)組的形式傳遞 3 個(gè) 3D 坐標(biāo)用來(lái)表示一個(gè)三角形。
5、弊端:GPU會(huì)等待顯示的V-Sync信號(hào)發(fā)出后,才進(jìn)行新的一幀渲染和緩存區(qū)更新。能解決畫(huà)面撕裂現(xiàn)象,也增加了畫(huà)面流暢度,但需要消耗更多的計(jì)算資源,由此可能導(dǎo)致卡頓。
在HTML中,每個(gè)元素都可以理解成一個(gè)盒子,在瀏覽器解析過(guò)程中,會(huì)涉及到回流與重繪?;亓?:布局引擎會(huì)根據(jù)各種樣式計(jì)算每個(gè)盒子在頁(yè)面上的大小與位置。
在這個(gè)過(guò)程中,回流與dom樹(shù)和渲染樹(shù)有關(guān),重繪與渲染樹(shù)有關(guān)。
頁(yè)面布局、幾何屬性改變時(shí)(尺寸、布局、display:none等),頁(yè)面就需要回流。
重繪是指頁(yè)面中某些元素發(fā)生了不影響布局的變化時(shí)(如顏色改變),瀏覽器重新繪制的過(guò)程。此時(shí)由于只需要UI層面的重新像素繪制,因此損耗較少。
1、CPU將圖形任務(wù)分配給GPU,GPU把渲染好的圖片存入緩沖區(qū),視頻控制器按照一定的頻率顯示到屏幕上。這個(gè)頻率其實(shí)是顯示器發(fā)出的一個(gè)信號(hào),叫做垂直同步信號(hào)VSync。作用是屏幕顯示完一幀畫(huà)面后再切換到下一幀的顯示工作。
2、離屏渲染(Off-Screen Rendering):就是GPU在當(dāng)前屏幕以外開(kāi)辟一個(gè)另外的緩沖區(qū)進(jìn)行渲染操作。當(dāng)前屏幕渲染(On-Screen Rendering):指的是GPU是在當(dāng)前顯示的屏幕緩沖區(qū)進(jìn)行的渲染操作。
3、下圖所示為 iOS App 的圖形渲染技術(shù)棧,App 使用 Core Graphics 、 Core Animation 、 Core Image 等框架來(lái)繪制可視化內(nèi)容,這些軟件框架相互之間也有著依賴關(guān)系。
4、手機(jī)中和電腦中的gpu其功能是大致一樣的,其目的都是對(duì)圖像和圖形進(jìn)行處理。
5、GPU的渲染流程不再追溯,當(dāng)前使用Metal來(lái)進(jìn)行渲染,因此Metal的渲染流程可以看 十Metal - 初探 。
對(duì)每個(gè)像素進(jìn)行計(jì)算確定最終顏色并完成輸出。不過(guò)需要注意的是,無(wú)論多牛的游戲家用顯卡,光影都是CPU計(jì)算的,GPU只有2個(gè)工作,1多邊形生成。2為多邊形上顏色。
本來(lái)我們從后往前繪制,繪制完一個(gè)圖層就可以丟棄了。但現(xiàn)在需要依次在 Offscreen Buffer中保存,等待圓角+裁剪處理,即引發(fā)了 離屏渲染 關(guān)于圓角,iOS 9及之后的系統(tǒng)版本,蘋(píng)果進(jìn)行了一些優(yōu)化。
我怕時(shí)間長(zhǎng)視頻會(huì)無(wú)法播放,所以我截取了視頻中的兩部分做成了gif圖。
一道很常規(guī)的題目,考的是基本網(wǎng)絡(luò)原理,和瀏覽器加載css,js過(guò)程。
IE下載的順序是從上到下,渲染的順序也是從上到下,下載和渲染是同時(shí)進(jìn)行的。
Tree 匹配 DOM Tree 進(jìn)行定位坐標(biāo)和大小,是否換行,以及 position、overflow、z-index 等等屬性,這個(gè)過(guò)程稱為 Flow 或 Layout 。最終通過(guò)調(diào)用Native GUI 的 API 繪制網(wǎng)頁(yè)畫(huà)面的過(guò)程稱為 Paint 。
新聞名稱:ios開(kāi)發(fā)呈現(xiàn)樹(shù)和渲染樹(shù) 渲染樹(shù)構(gòu)建過(guò)程
本文來(lái)源:http://chinadenli.net/article47/dgodjhj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、外貿(mào)建站、營(yíng)銷型網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、虛擬主機(jī)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)