20170329(JS相關(guān)概念)

CSS和JS在網(wǎng)頁中的放置順序是怎樣的皮迟?

CSS放置在<head>中搬泥;
JS不嚴(yán)格的來說放在那里都可以,但是如果在HTML和CSS沒有讀取完畢的情況插入JS伏尼,有可能出現(xiàn)白屏現(xiàn)象忿檩,所以最好放置在HTML和CSS之后。

解釋白屏和FOUC

如果把樣式放在底部,對(duì)于IE瀏覽器,在某些場景下(新窗口打開,刷新等)頁面會(huì)出現(xiàn)白屏,而不是內(nèi)容逐步展現(xiàn)爆阶,如果使用 @import 標(biāo)簽,即使 CSS 放入 link, 并且放在頭部,也可能出現(xiàn)白屏燥透。
如果使用import方法對(duì)CSS進(jìn)行導(dǎo)入,會(huì)導(dǎo)致某些頁面在Windows 下的Internet Explorer出現(xiàn)一些奇怪的現(xiàn)象:以無樣式顯示頁面內(nèi)容的瞬間閃爍,這種現(xiàn)象稱之為文檔樣式短暫失效(Flash of Unstyled Content),簡稱為FOUC。

async和defer的作用是什么辨图?有什么區(qū)別

1.<script src="example.js"></script>

沒有defer或async屬性班套,瀏覽器會(huì)立即加載并執(zhí)行相應(yīng)的腳本。也就是說在渲染script標(biāo)簽之后的文檔之前故河,不等待后續(xù)加載的文檔元素吱韭,讀到就開始加載和執(zhí)行,此舉會(huì)阻塞后續(xù)文檔的加載鱼的;
2.<script async src="example.js"></script>

有了async屬性理盆,表示后續(xù)文檔的加載和渲染與js腳本的加載和執(zhí)行是并行進(jìn)行的痘煤,即異步執(zhí)行;
3.<script defer src="example.js"></script>

有了defer屬性猿规,加載后續(xù)文檔的過程和js腳本的加載(此時(shí)僅加載不執(zhí)行)是并行進(jìn)行的(異步)衷快,js腳本的執(zhí)行需要等到文檔所有元素解析完成之后,DOMContentLoaded事件觸發(fā)執(zhí)行之前坎拐。

下圖可以直觀的看出三者之間的區(qū)別:



*其中藍(lán)色代表js腳本網(wǎng)絡(luò)加載時(shí)間烦磁,紅色代表js腳本執(zhí)行時(shí)間养匈,綠色代表html解析哼勇。

從圖中我們可以明確一下幾點(diǎn):

1.defer和async在網(wǎng)絡(luò)加載過程是一致的,都是異步執(zhí)行的呕乎;

2.兩者的區(qū)別在于腳本加載完成之后何時(shí)執(zhí)行积担,可以看出defer更符合大多數(shù)場景對(duì)應(yīng)用腳本加載和執(zhí)行的要求;

3.如果存在多個(gè)有defer屬性的腳本猬仁,那么它們是按照加載順序執(zhí)行腳本的帝璧;而對(duì)于async,它的加載和執(zhí)行是緊緊挨著的湿刽,無論聲明順序如何的烁,只要加載完成就立刻執(zhí)行,它對(duì)于應(yīng)用腳本用處不大诈闺,因?yàn)樗耆豢紤]依賴渴庆。

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

1.由從服務(wù)器接收到的 HTML 形成 DOM(文檔對(duì)象模型)。
2.樣式被加載和解析雅镊,形成 CSSOM(CSS 對(duì)象模型)襟雷。
3.緊接著 DOM 和 CSSOM 創(chuàng)建了一個(gè)渲染樹,這個(gè)渲染樹是一些被渲染對(duì)象的集合( Webkit 分別叫它們”renderer”和”render object”仁烹,而在Gecko 引擎中叫”frame”)耸弄。除了不可見的元素(比如 head 標(biāo)簽和一些有 display:none 屬性的元素),渲染樹映射了 DOM 的結(jié)構(gòu)卓缰。在渲染樹中计呈,每一個(gè)文本字符串都被當(dāng)做一個(gè)獨(dú)立的 renderer。每個(gè)渲染對(duì)象都包含了與之對(duì)應(yīng)的計(jì)算過樣式的DOM 對(duì)象(或者一個(gè)文本塊)征唬。換句話說捌显,渲染樹描述了 DOM 的直觀的表現(xiàn)形式。
4.對(duì)每個(gè)渲染元素來說鳍鸵,它的坐標(biāo)是經(jīng)過計(jì)算的苇瓣,這被叫做“布局(layout)”。瀏覽器使用一種只需要一次處理的“流方法”來布局所有元素(tables需要多次處理)偿乖。
5.最后击罪,將布局顯示在瀏覽器窗口中哲嘲,這個(gè)過程叫做“繪制(painting)”。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媳禁,一起剝皮案震驚了整個(gè)濱河市眠副,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竣稽,老刑警劉巖囱怕,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異毫别,居然都是意外死亡娃弓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門岛宦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來台丛,“玉大人,你說我怎么就攤上這事砾肺⊥烀梗” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵变汪,是天一觀的道長侠坎。 經(jīng)常有香客問我,道長裙盾,這世上最難降的妖魔是什么实胸? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮闷煤,結(jié)果婚禮上童芹,老公的妹妹穿的比我還像新娘。我一直安慰自己鲤拿,他們只是感情好假褪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著近顷,像睡著了一般生音。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窒升,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天缀遍,我揣著相機(jī)與錄音,去河邊找鬼饱须。 笑死域醇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播譬挚,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼锅铅,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了减宣?” 一聲冷哼從身側(cè)響起盐须,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漆腌,沒想到半個(gè)月后贼邓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闷尿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年塑径,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悠砚。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晓勇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灌旧,到底是詐尸還是另有隱情,我是刑警寧澤绰筛,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布枢泰,位于F島的核電站,受9級(jí)特大地震影響铝噩,放射性物質(zhì)發(fā)生泄漏衡蚂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一骏庸、第九天 我趴在偏房一處隱蔽的房頂上張望毛甲。 院中可真熱鬧,春花似錦具被、人聲如沸玻募。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽七咧。三九已至,卻和暖如春叮叹,著一層夾襖步出監(jiān)牢的瞬間艾栋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工蛉顽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝗砾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像悼粮,于是被迫代替她去往敵國和親拇泣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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

  • 1. CSS和JS在網(wǎng)頁中的放置順序是怎樣的矮锈? css放在head標(biāo)簽內(nèi)霉翔,防止渲染時(shí)出現(xiàn)白屏 js放在最后body...
    billa_8f6b閱讀 576評(píng)論 0 0
  • 簡單介紹JavaScript的發(fā)展歷史 JavaScript因互聯(lián)網(wǎng)而生,回顧它的歷史要從瀏覽器的歷史講起苞笨。 19...
    _Dot912閱讀 492評(píng)論 0 3
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案债朵? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,754評(píng)論 1 92
  • 1,CSS和JS在網(wǎng)頁中的放置順序是怎樣的瀑凝? 網(wǎng)站加載的整個(gè)完整過程是:1序芦、首先瀏覽器從服務(wù)器接收到html代碼,...
    進(jìn)擊的前端_風(fēng)笑影閱讀 310評(píng)論 0 0
  • 1. CSS和JS在網(wǎng)頁中的放置順序是怎樣的粤咪? CSS最好放入header中谚中,即放在網(wǎng)頁內(nèi)容(html標(biāo)簽中包含的...
    熊蛋子17閱讀 505評(píng)論 0 0