該把外部JS文件放在HTML的哪個(gè)位置

一般來(lái)說(shuō),我們都會(huì)將外部js文件放在我們html<head>...</head>中:

<html>
    <head>
        <script type="text/javascript" src="index.js"></script>
    </head>
    <body>
    ...
    </body>
</html>

那么這樣到底好不好呢涛舍?

在瀏覽器渲染頁(yè)面之前,它需要通過(guò)解析HTML標(biāo)記然后構(gòu)建DOM樹(shù)箩言。在這個(gè)過(guò)程中硬贯,如果解析器遇到了一個(gè)腳本(script),它就會(huì)停下來(lái)陨收,并且執(zhí)行這個(gè)腳本饭豹,然后才會(huì)繼續(xù)解析HTML。如果遇到了一個(gè)引用外部資源的腳本(script)务漩,它就必須停下來(lái)等待這個(gè)腳本資源的下載拄衰,而這個(gè)行為會(huì)導(dǎo)致一個(gè)或者多個(gè)的網(wǎng)絡(luò)往返,并且會(huì)延遲頁(yè)面的首次渲染時(shí)間饵骨。

那么既然把腳本(script)資源放在head里面是個(gè)不好的主意翘悉,并且可能會(huì)阻塞瀏覽器渲染頁(yè)面;那我們是不是要把所有的JavaScript文件都放置到文檔的底部呢居触?

那也不一定哦妖混。老赤。。

如果你的腳本中使用了document.write在頁(yè)面中插入內(nèi)容的話(huà)制市,那么我的內(nèi)容必須在頁(yè)面加載的時(shí)候就顯示出來(lái)抬旺,那此時(shí)我的js就必須在<head>里面了。

到底怎么放呢

  • 對(duì)于必須要在DOM加載之前運(yùn)行的JavaScript腳本祥楣,我們需要把這些腳本放置在頁(yè)面的head中开财,而不是通過(guò)外部引用的方式,因?yàn)橥獠康囊迷黾恿司W(wǎng)絡(luò)的請(qǐng)求次數(shù)误褪;并且我們要確保內(nèi)斂的這些JavaScript腳本是很小的责鳍,最好是壓縮過(guò)的,并且執(zhí)行的速度很快振坚,不會(huì)造成瀏覽器渲染的阻塞薇搁;

  • 對(duì)于支持使用script標(biāo)簽的asyncdefer屬性的瀏覽器,我們可以使用這兩個(gè)屬性渡八;asyncdefer都代表異步執(zhí)行啃洋,他們的下載過(guò)程都可以在HTML的解析過(guò)程中進(jìn)行,async加載完成之后立即執(zhí)行這個(gè)文件的代碼屎鳍,執(zhí)行文件代碼的過(guò)程中會(huì)阻塞HTML的解析宏娄,defer是在HTML文檔解析之后再執(zhí)行加載完成的文件

  • 那么除了必須在頁(yè)面加載前執(zhí)行的js文件,且不支持asyncdefer的瀏覽器逮壁,那么我們就可以將他們放在html底部孵坚。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市窥淆,隨后出現(xiàn)的幾起案子卖宠,更是在濱河造成了極大的恐慌,老刑警劉巖忧饭,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扛伍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡词裤,警方通過(guò)查閱死者的電腦和手機(jī)刺洒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)吼砂,“玉大人逆航,你說(shuō)我怎么就攤上這事∮婕纾” “怎么了因俐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我女揭,道長(zhǎng)蚤假,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任吧兔,我火速辦了婚禮磷仰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘境蔼。我一直安慰自己灶平,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布箍土。 她就那樣靜靜地躺著逢享,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吴藻。 梳的紋絲不亂的頭發(fā)上瞒爬,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音沟堡,去河邊找鬼侧但。 笑死,一個(gè)胖子當(dāng)著我的面吹牛航罗,可吹牛的內(nèi)容都是我干的禀横。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼粥血,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柏锄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起复亏,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤趾娃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后缔御,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體茫舶,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年刹淌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讥耗。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡有勾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出古程,到底是詐尸還是另有隱情蔼卡,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布挣磨,位于F島的核電站雇逞,受9級(jí)特大地震影響荤懂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜塘砸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一节仿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掉蔬,春花似錦廊宪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蛉迹,卻和暖如春傅寡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背北救。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工荐操, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扭倾。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓淀零,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親膛壹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驾中,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 更好閱讀體驗(yàn)請(qǐng)前往dreamapple.me 我們今天來(lái)聊一聊關(guān)于JavaScript文件的引入位置的問(wèn)題;大家在...
    dreamapple閱讀 423評(píng)論 0 1
  • 瀏覽器中script標(biāo)簽加載順序是如何的呢模聋?這個(gè)問(wèn)題折騰了好幾次了肩民,之前弄清楚了以后,覺(jué)得做不做筆記的無(wú)關(guān)緊要链方,可...
    世事如煙_f411閱讀 1,513評(píng)論 0 1
  • 簡(jiǎn)單介紹JavaScript的發(fā)展歷史 JavaScript因互聯(lián)網(wǎng)而生持痰,回顧它的歷史要從瀏覽器的歷史講起。 19...
    _Dot912閱讀 479評(píng)論 0 3
  • JavaScript腳本對(duì)現(xiàn)代網(wǎng)站來(lái)說(shuō)是必不可少的祟蚀。當(dāng)用戶(hù)訪問(wèn)站點(diǎn)工窍,需要下載各種資源,例如JS腳本前酿,CSS患雏,圖片,...
    張歆琳閱讀 9,051評(píng)論 0 24
  • 這兩年創(chuàng)業(yè)圈有個(gè)炙手可熱的概念叫做精益創(chuàng)業(yè)(the lean startup),精益創(chuàng)業(yè)主張投入最少的金錢(qián)和精力罢维,...
    毛文鑫閱讀 2,421評(píng)論 1 3