js相關(guān)概念總結(jié)

1. CSS和JS在網(wǎng)頁中的放置順序是怎樣的?
CSS必須是在html之前載入嫌蚤,所以放在head標(biāo)簽里摊灭。
JS放在CSS后面,既可以放在head標(biāo)簽里偷崩,也可以放在body標(biāo)簽之后

2. 解釋白屏和FOUC

  • 白屏問題: 如果把樣式放在底部辟拷,對于IE瀏覽器,chrome等(css全部加載后再呈現(xiàn),有可能等待長)阐斜,在某些場景下(新窗口打開衫冻,刷新等)頁面會出現(xiàn)白屏,而不是內(nèi)容逐步展現(xiàn)谒出。使用 @import 標(biāo)簽隅俘,即使 CSS 放入 link, 并且放在頭部,也可能出現(xiàn)白屏。 對于圖片和CSS, 在加載時會并發(fā)加載(如一個域名下同時加載兩個文件)笤喳。 但在加載 JavaScript 時为居,會禁用并發(fā),并且阻止其他內(nèi)容的下載. 所以把 JavaScript 放入頁面頂部也會導(dǎo)致 白屏 現(xiàn)象.
  • FOUC: Flash of Unstyled Content "無樣式內(nèi)容閃爍“:有些瀏覽器是邊渲染邊呈現(xiàn)杀狡,CSS放置body標(biāo)簽底部蒙畴,會出現(xiàn)加載html結(jié)束后才一次性加載css樣式,從而導(dǎo)致頁面閃爍呜象。
    我們了解當(dāng)輸入網(wǎng)址按回車后瀏覽器會向服務(wù)器發(fā)送請求膳凝,然后服務(wù)器返回頁面給瀏覽器八孝,瀏覽器邊下載頁面邊解析邊渲染。邊下載頁面邊解析邊渲染的過程:
  1. 邊下載邊解析就是邊下載html邊構(gòu)建DOM Tree;
  2. 瀏覽器以user agent stylesheet(瀏覽器內(nèi)置樣式)為原料構(gòu)建CSSOM Tree;
  3. DOM Tree+CSSOM Tree構(gòu)建出Render Tree鸠项,然后頁面內(nèi)容渲染出來;
  4. 當(dāng)解析到inline stylesheet 或 internal stylesheet時干跛,馬上刷新CSSOM Tree,CSSOM Tree或DOM Tree發(fā)生變化時會引起Render Tree變化;
  5. 當(dāng)解析到external stylesheet時就先加載祟绊,然后如internal stylesheet那樣解析和刷新CSSOM Tree和Render Tree了楼入。
    總結(jié):上述步驟5中由于樣式文件存在下載這個延時不確定的階段,因此網(wǎng)絡(luò)環(huán)境不好或樣式資源體積大的情況下我們可以看到樣式閃爍明顯牧抽。

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

  • 沒有 defer 或 async,瀏覽器會立即加載并執(zhí)行指定的腳本扬舒,“立即”指的是在渲染該 script 標(biāo)簽之下的文檔元素之前阐肤,也就是說不等待后續(xù)載入的文檔元素,讀到就加載并執(zhí)行讲坎。
  • 有 async孕惜,加載和渲染后續(xù)文檔元素的過程將和 script.js 的加載與執(zhí)行并行進(jìn)行(異步)。
  • 有 defer晨炕,加載后續(xù)文檔元素的過程將和 script.js 的加載并行進(jìn)行(異步)衫画,但是 script.js 的執(zhí)行要在所有元素解析完成之后,DOMContentLoaded 事件觸發(fā)之前完成瓮栗。
  • 如果腳本涉及少量DOM操作削罩,則defer屬性更優(yōu):因為html解析未完成前,可能DOM tree未形成费奸,此時進(jìn)行DOM操作弥激,可能失敗。
      如果是多個腳本愿阐,則其執(zhí)行順序為:
        a微服、多個defer腳本,根據(jù)HTML5的規(guī)定换况,會按照定義的加載順序职辨,按序執(zhí)行;
        b戈二、多個async腳本舒裤,由于加載完成立即執(zhí)行,所以是亂序觉吭;因此其更適合腳本之間無依賴關(guān)系的情況腾供。
  • 然后從實(shí)用角度來說呢,首先把所有腳本都丟到 </body> 之前是最佳實(shí)踐,因為對于舊瀏覽器來說這是唯一的優(yōu)化選擇伴鳖,此法可保證非腳本的其他一切元素能夠以最快的速度得到加載和解析节值。

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

  1. 瀏覽器將從服務(wù)器獲取的HTML文檔構(gòu)建成文檔對象模型DOM(Document Object Model).

  2. 樣式將被載入和解析,構(gòu)成層疊樣式表模型CSSOM(CSS Object Model).

  3. 在DOM和CSSOM之上榜聂,渲染樹(rendering tree)將會被創(chuàng)建搞疗,代表一系列將被渲染的對象(這在Webkit內(nèi)核中被稱為renderer或者渲染對象render object,在Gecko內(nèi)核中被稱為框架frame)须肆。渲染樹映射除了不可見元素(例如<head>或者含有display:none;的標(biāo)簽)外的所有DOM結(jié)構(gòu)匿乃。每一段文本字符串都將劃分在不同的渲染對象中,每一個渲染對象都包含了它相應(yīng)的DOM對象以及計算后的樣式豌汇。換句話講幢炸,渲染樹是DOM的直觀表示。

  4. 渲染樹的每個元素包含的內(nèi)容都是計算過的拒贱,它被稱之為布局layout.瀏覽器使用一種流式處理的方法宛徊,只需要一次pass繪制操作就可以布局所有的元素(tables需要多次pass繪制,pass表示像素處理和頂點(diǎn)處理)逻澳。

  5. 最后布局完成闸天,渲染樹將轉(zhuǎn)化為屏幕上的實(shí)際內(nèi)容,這一步被稱為繪制painting.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赡盘,一起剝皮案震驚了整個濱河市号枕,隨后出現(xiàn)的幾起案子缰揪,更是在濱河造成了極大的恐慌陨享,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钝腺,死亡現(xiàn)場離奇詭異抛姑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)艳狐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門定硝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毫目,你說我怎么就攤上這事蔬啡。” “怎么了镀虐?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵箱蟆,是天一觀的道長。 經(jīng)常有香客問我刮便,道長空猜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮辈毯,結(jié)果婚禮上坝疼,老公的妹妹穿的比我還像新娘。我一直安慰自己谆沃,他們只是感情好钝凶,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著唁影,像睡著了一般腿椎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上夭咬,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天啃炸,我揣著相機(jī)與錄音,去河邊找鬼卓舵。 笑死南用,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掏湾。 我是一名探鬼主播裹虫,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼融击!你這毒婦竟也來了筑公?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤尊浪,失蹤者是張志新(化名)和其女友劉穎匣屡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拇涤,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捣作,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鹅士。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片券躁。...
    茶點(diǎn)故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掉盅,靈堂內(nèi)的尸體忽然破棺而出也拜,到底是詐尸還是另有隱情,我是刑警寧澤趾痘,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布慢哈,位于F島的核電站,受9級特大地震影響扼脐,放射性物質(zhì)發(fā)生泄漏岸军。R本人自食惡果不足惜奋刽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望艰赞。 院中可真熱鬧佣谐,春花似錦、人聲如沸方妖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽党觅。三九已至雌澄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杯瞻,已是汗流浹背镐牺。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魁莉,地道東北人睬涧。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像旗唁,于是被迫代替她去往敵國和親畦浓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 簡單介紹JavaScript的發(fā)展歷史 JavaScript因互聯(lián)網(wǎng)而生检疫,回顧它的歷史要從瀏覽器的歷史講起讶请。 19...
    _Dot912閱讀 492評論 0 3
  • 1. CSS和JS在網(wǎng)頁中的放置順序是怎樣的? css放在head標(biāo)簽內(nèi)屎媳,防止渲染時出現(xiàn)白屏 js放在最后body...
    billa_8f6b閱讀 576評論 0 0
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案夺溢? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,761評論 1 92
  • 簡介瀏覽器可以被認(rèn)為是使用最廣泛的軟件企垦,本文將介紹瀏覽器的工 作原理,我們將看到晒来,從你在地址欄輸入google.c...
    聽風(fēng)閣閱讀 3,293評論 0 7
  • 舊時空效應(yīng),就是指一個人如果回到過去的環(huán)境或者見到過去的人郑现,就會變成過去的樣子湃崩。 常年在外的人回到家鄉(xiāng),看到很多舊...
    蘇小白說閱讀 816評論 5 12