JS相關概念

1.CSS和JS在網(wǎng)頁中的放置順序是怎樣的色洞?

  • css文件一般放在head里勋乾,css的解析是在html解析之內開始的隶症,css解析和html解析是可以同時進行的。當 html 構建生成 DOM许起, css 構建生成 CSSOM,兩者合并才能開始構建 Render Tree菩鲜,所以什么開始構建 Render Tree 取決于园细, DOM 和 CSSOM 的構建慢的一方。因此需要將css放在head中接校,盡早下載css資源猛频,盡快解析,縮短首次渲染時間蛛勉。
  • JS一般放在 </body> 標簽前鹿寻,一方面:他會阻塞 DOM 的構建,當 html 解析碰到 script 標簽之后诽凌,如果是外聯(lián)腳本毡熏,瀏覽器會停止解析 html, 等待 js 資源被取回之后侣诵,執(zhí)行 js 代碼痢法,如果是內聯(lián)腳本,也會阻塞解析器窝趣,執(zhí)行 js 代碼疯暑。這就會使得 DOM 的構建比較耗時。
    另一方面哑舒,雖然樣式不會影響 DOM 的構建,然后在阻塞解析器的JS在執(zhí)行過程中可能會請求樣式信息幻馁。如果當時還沒有加載和解析樣式洗鸵,腳本就會獲得錯誤的回復,這就會造成很多問題仗嗦。所以瀏覽器為了避免這樣的問題膘滨,會在加載和解析 css 的過程中,禁止腳本執(zhí)行稀拐。換句話說 CSSOM 的構建會阻塞 JavaScript 執(zhí)行火邓。
    參考文章

2.解釋白屏和FOUC

不同的瀏覽器對于CSS和HTML的處理方式不同,有的是等待CSS加載完成之后德撬,對HTML元素進行渲染和展示(白屏問題)铲咨。有的是先對HTML元素進行展示,然后等待CSS加載完成之后重新對樣式進行修改(FOUC無樣式內容閃爍)

  • Chrome瀏覽器:不論css放在head里還是放在body底部都會等待css樣式加載完再展示HTML蜓洪,網(wǎng)速慢會出現(xiàn)白屏問題纤勒。
  • IE瀏覽器:只要看到一個HTML標簽就展示。
  • Firefox 如果css文件在head里隆檀,那么一定等css下載完再展示HTML摇天;
    如果CSS文件在body里粹湃,那么看到一個HTML標簽就展示。

3.async和defer的作用是什么泉坐?有什么區(qū)別

defer为鳄,加載后續(xù)文檔元素的過程將和 script.js 的加載并行進行(異步),但 script.js 的執(zhí)行要在所有元素解析完成之后腕让,DOMContentLoaded 事件觸發(fā)之前完成济赎。
async,加載和渲染后續(xù)文檔元素的過程將和 script.js 的加載與執(zhí)行并行進行(異步)记某。

image.png

綠色:文檔元素加載 藍色:script.js加載 紅色:script.js執(zhí)行

4.簡述網(wǎng)頁的渲染機制

  1. 處理 HTML 標記并構建 DOM 樹司训。
  2. 處理 CSS 標記并構建 CSSOM 樹。
  3. 將 DOM 與 CSSOM 合并成一個渲染樹液南。
  4. 根據(jù)渲染樹來布局壳猜,以計算每個節(jié)點的幾何信息。
  5. 將各個節(jié)點繪制到屏幕上滑凉。
    參考資料https://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/
    https://www.chengrang.com/how-browsers-work.html
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末统扳,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子畅姊,更是在濱河造成了極大的恐慌咒钟,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件若未,死亡現(xiàn)場離奇詭異朱嘴,居然都是意外死亡,警方通過查閱死者的電腦和手機粗合,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門萍嬉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人隙疚,你說我怎么就攤上這事壤追。” “怎么了供屉?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵行冰,是天一觀的道長。 經(jīng)常有香客問我伶丐,道長悼做,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任撵割,我火速辦了婚禮贿堰,結果婚禮上,老公的妹妹穿的比我還像新娘啡彬。我一直安慰自己羹与,他們只是感情好故硅,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纵搁,像睡著了一般吃衅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腾誉,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天徘层,我揣著相機與錄音,去河邊找鬼利职。 笑死趣效,一個胖子當著我的面吹牛,可吹牛的內容都是我干的猪贪。 我是一名探鬼主播跷敬,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼热押!你這毒婦竟也來了西傀?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤桶癣,失蹤者是張志新(化名)和其女友劉穎拥褂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牙寞,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡饺鹃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碎税。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尤慰。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖雷蹂,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情杯道,我是刑警寧澤匪煌,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站党巾,受9級特大地震影響萎庭,放射性物質發(fā)生泄漏。R本人自食惡果不足惜齿拂,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一驳规、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧署海,春花似錦吗购、人聲如沸医男。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽镀梭。三九已至,卻和暖如春踱启,著一層夾襖步出監(jiān)牢的瞬間报账,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工埠偿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留透罢,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓冠蒋,卻偏偏與公主長得像羽圃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子浊服,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內容

  • 1. CSS和JS在網(wǎng)頁中的放置順序是怎樣的统屈? css放在head標簽內,防止渲染時出現(xiàn)白屏 js放在最后body...
    billa_8f6b閱讀 576評論 0 0
  • 1牙躺,CSS和JS在網(wǎng)頁中的放置順序是怎樣的愁憔? 網(wǎng)站加載的整個完整過程是:1、首先瀏覽器從服務器接收到html代碼孽拷,...
    進擊的前端_風笑影閱讀 311評論 0 0
  • CSS和JS在網(wǎng)頁中的放置順序 網(wǎng)站加載的整個完整過程:首先瀏覽器從服務器接收到html代碼吨掌,然后開始解析html...
    Joey的企鵝閱讀 276評論 1 0
  • 簡單介紹JavaScript的發(fā)展歷史 JavaScript因互聯(lián)網(wǎng)而生,回顧它的歷史要從瀏覽器的歷史講起脓恕。 19...
    _Dot912閱讀 492評論 0 3
  • CSS和JS在網(wǎng)頁中的放置順序是怎樣的膜宋? 首先要區(qū)分css和js的執(zhí)行順序 html文件是自上而下的執(zhí)行方式,但引...
    LINPENGISTHEONE閱讀 256評論 0 0