回覆列表
  • 1 # 使用者9231804048218

    我覺得會。

    我的一些理解:

    頁面呈現過程是:

    1、取回html程式碼,從上往下進行解析。

    2、解析我覺得就是構建dom樹和render樹以及renderlayer樹,前面是html各節點的結構樹,後兩棵用於渲染頁面。構建dom樹我理解為,比如說我遇到就構建一個html節點,後面遇到

    我就把html視為父親節點,節點存放指向body。一直遇到代表後面沒有了子節點。

    3、如果構建dom樹過程中遇到了script、img或者css就載入進來,我用chrome的時候,發現這些資源是並行載入的,就是傳送請求的時間一樣。(這裡就有個小問題想請教,如果構建dom樹是從上往下的話,應該遇到這些標籤時間應該有先後,那麼chrome是怎麼實現的並行額?)

    4、dom樹構建和render樹構建renderlayer樹構建是同時進行的,第3點說到遇到script就載入,載入完後會馬上執行,所以dom樹後續節點並不能構建,這裡就會發生執行阻塞了。

    注:js單執行緒的相關知識說js引擎和渲染不是同一執行緒,這裡跟js阻塞渲染不矛盾,因為dom樹構建到script標籤時候,後續節點被阻塞構建,但是可能render樹和renderlayer樹還在構建(前面的節點),這兩樹構建(實際上dom樹構建我懷疑也在渲染執行緒裡面)屬於渲染執行緒。所以這時就是js在執行,渲染在工作,符合兩執行緒的特點。

  • 中秋節和大豐收的關聯?
  • 霍建華版《笑傲江湖》好看嗎?