<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                #### 1. 各瀏覽器使用的JavaScript引擎以及它們的異同點、如何在代碼中進行區分 #### 2. 請求數據到請求結束與服務器了幾次交互 #### 3. 可詳細描述瀏覽器從輸入URL到頁面展現的詳細過程 1. 瀏覽器根據輸入的URL地址交給DNS服務器進行域名解析,得到服務器IP地址 2. 與服務器建立TCP連接,瀏覽器發起請求 3. 服務器響應瀏覽器請求,瀏覽器根據解析DOM,響應內的內容如果有CSS,JS,IMG等資源繼續向服務器進行請求 4. 將響應回來的結果進行渲染合成,布局、繪制,最后在瀏覽器進行呈現 #### 4. 瀏覽器解析HTML代碼的原理,以及構建DOM樹的流程 #### 5. 瀏覽器如何解析CSS規則,并將其應用到DOM樹上 #### 6. 瀏覽器如何解析好的帶有樣式的DOM樹進行繪制 #### 7. 瀏覽器的運行機制,如何配置資源異步同步加載 #### 8. 瀏覽器回流與重繪的底層原理,引發原因,如何有效避免 1. 重繪:當render tree的一些元素屬性需要更新,而這些屬性只是影響元素的外觀,風格,而不會影響布局的,比如background-color。則稱為重繪 2. 回流:頁面元素的大小位置發生改變,則會觸發回流 1. 盒子模型相關屬性會觸發重布局 2. 定位屬性及浮動也會觸發重布局 3. 改變節點內部文字結構也會觸發重布局 4. width height padding margin top bottom text-align overflow-y line-height... 3. -----回流必將會引起重繪,而重繪不一定會引起回流----- #### 9. 瀏覽器的垃圾回收機制,如何避免內存泄漏 1. 垃圾回收:是程序運行時所需要占用的內存,當程序中的變量不需要時應該釋放掉,或者多個對象循環引用,但程序也用不到他們,它們也應該被釋放掉 2. JS常用垃圾回收機制法:標記清除法、引用計數法 3. 標記清除法:js中最常用的垃圾回收方式就是標記清除。當變量進入環境時,例如,在一個函數中聲明一個變量,就將這個變量標記為"進入環境",從邏輯上講,永遠不能釋放進入環境變量所占用的內存,因為只要執行流進入相應的環境,就可能會用到它們。而當變量離開環境時,則將其標記為"離開環境"。 ``` function test(){ var a = 10 //被標記"進入環境" var b = "hello" //被標記"進入環境" } test() //執行完畢后之后,a和b又被標記"離開環境",被回收 ``` 4. 引用計數法:JS引擎有一張"引用表",保存了內存里面所有資源(通常是各種值)的引用次數。如果一個值的引用次數是0,就表示這個值不再用到了,因此可以將這塊內存釋放。 5. 雖然有了垃圾回收機制,但還是需要關注內存占用:那些很占空間的值,一旦不再用到,你必須檢查是否還存在對它們的引用。如果是的話,就必須手動解除引用 #### 10. 瀏覽器采用的緩存方案,如何選擇和控制合適的緩存方案 ### 瀏覽器從網絡中接收HTML文件之后的一系列轉換過程 1. 在網絡傳輸中傳輸的都是0和1這類字節 2. 瀏覽器接收到這些字節將其轉換為字符串,字符串就是我們寫的代碼 3. 瀏覽器會先將這些字符串通過詞法分析轉換為標記,給每一段代碼打上標記 4. 標記結束后,會緊接著轉換為Node節點,構成DOM樹 5. 字符數據 => 字符串數據 => token(標記) => Node(節點) => DOM ### 瀏覽器解析CSS 1. span { color: red } 瀏覽器只需要找到所有span標簽所設置樣式即可,效率高 2. div > p > span { color: red } 瀏覽器需要遞歸去尋找符合條件的元素,查找效率低,先找到所有的span標簽,再找到span上的p標簽,再找到p標簽上的div標簽,給這些符合條件的span標簽設置樣式,所以盡量避免寫過于復雜的CSS選擇器 ### RenderTree:渲染樹 1. DOM樹與CSSOM樹生成之后瀏覽器將其生成RenderTree(渲染樹),渲染樹只會生成需要顯示的元素, 生成渲染樹之后,瀏覽器就會根據渲染樹來進行布局,也可以叫**回流** ![](https://img.kancloud.cn/7a/c5/7ac53e1c28694ff6a2b0fd29e13ae72f_1503x406.png) #### CSS阻塞 1. CSS head中阻塞頁面的渲染 2. CSS阻塞JS的執行,因為JS的操作很有可能是操作HTML與CSS合成后的DOM,所以會阻塞理論上是可行的 3. CSS不阻塞JS的加載 #### JS阻塞 1. 直接引入的JS阻塞頁面的渲染:因為JS很有可能會操作頁面文檔,所以HTML parse會停止解析,等待JS執行完成再繼續渲染 2. JS不阻塞其它資源的加載 3. JS順序執行,阻塞后續JS邏輯的執行 ### URL中的參數 1. 路徑參數:/url/:id/url2/:id2 2. 查詢參數:?后面的key value #### Chrome創建圖層的條件 ----圖層不能濫用,會造成圖層合成時間過久,頻繁渲染的元素包裹在一個圖層里面是有助于區域重繪回流的--- 1. 3D或透視變換CSS屬性( perspective transform ) 2. 使用加速視頻解碼的<video>節點 3. 擁有3D( WebGL )上下文或加速的2D上下文的<canvas>節點 4. 對元素觸發圖層:transform:translateZ || will-change:transform #### 文檔頁面加載事件 1. DOMContentLoaded:觸發時機:DOM解析完成時觸發 DOMContentLoaded 事件 2. load:觸發時機:頁面上的資源都加載完成時才會觸發 #### 9. 改變阻塞模式:defer && async 1. defer:加載與async相同,不同的是加載完并非立即執行,而是在頁面解析完成,`DOMContentLoaded`事件之前進行加載,多個defer屬性的外鏈腳本會按照順序執行 2. async:當遇到<script async src="1.js">時,與其它并行加載,加載完成后立即執行,不管HTML處于解析階段還是DOMContentLoaded事件之后,執行1.js,但一定會在 load 事件之前進行執行 3. 動態創建DOM 4. 按需異步引入JS 5. defer、async對于inline->script標簽無效 #### 10. JS延遲加載的方式: 1. doucment.createElement( 'script' ) //動態創建的腳本就是異步的,可以將些腳本設置為同步 2. XMLHttpRequest異步請求JS文件 ![](https://img.kancloud.cn/55/03/5503e6e7b2559c633c9a5aab2ecae696_597x731.jpg) #### 2. 為什么操作DOM慢: 1. 因為JS引擎和渲染引擎是兩個不同的引擎,需要跨引擎通信,不管是操作還是獲取
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看