web前端學習之JavaScript 和css 阻塞,JavaScript 是客戶端和服務器端的腳本語言,可以插入HTML 頁函中, 并且是目前較熱門的Web 開發語言。同時, JavaScript 也是面向對象的編程語言。JavaScript 是一個可以被引入HTML 頁面的編程語言。這兩種語言并不完全相互依賴,而是針對不同的意圖而設計的。JavaScript是客戶端腳本語言,它稱為非結構化編程。
JavaScript 的阻塞特性是所有瀏覽器在下載JavaScript 代碼的時候, 會阻止其他一切活動,比如其他資源的下載, 內容的呈現等,直到JavaScript 代碼下載、解析、執行完畢后才開始繼續并行下載其他資源并渲染內容。
為了提高用戶體驗, 新一代瀏覽器都支持并行下載JavaScript 代碼,但是Java Script 代碼的下載仍然會阻塞其他資源的下載(例如圖片、css 文件等) 。為了防止JavaScript 修改DOM 樹,瀏覽器需要重新構建DOM 積仁所以就會阻塞其他資源的下載和渲染。
嵌入的JavaScr ipt 代碼會阻塞所有內容的呈現,而外部JavaScript 代碼只會阻塞其后內容的顯示,兩種方式都會阻塞其后資源的下載。也就是說,外部腳本不會阻塞外部腳本的力口載,但會阻塞外部腳本的執行。
css 本來是可以并行加載的,但是當css 后面跟著嵌入的JavaScript 代碼的時候,該css 就會阻塞后面資源的下載。而當把嵌入的JavaScript 代碼放到 css 前面時,就不會出現阻塞的情況了(在IE6 下css 都會阻塞加載)。
根本原因是因為瀏覽器會維持HTML 中css 和JavaScript 代碼的順序,樣式表必須在嵌入的JavaScript 代碼執行前先加載、解析完。而嵌入的JavaScript 代碼會阻塞后面的資源力口載,所以就會出現css 阻塞資源、加載的情況。








