簡體   English   中英

什么是優點和缺點:將javascript放在頭部並放在身體關閉之前

[英]What's Pros and Cons: putting javascript in head and putting just before the body close

大多數javascript和Web開發書籍/文章都說你必須將CSS放在head標簽和頁面底部的javascript中。

但是當我打開像這樣一個stackoverflow的着名網站的html源代碼時,我發現他們在head標簽中放了一些js文件。

這兩種方法的優缺點是什么?何時使用哪種方法?

找到了同一問題的另一個問題: 我應該在哪里聲明我的頁面中使用的JavaScript文件? 在<head> </ head>或</ body>附近?

來自雅虎加速網站最佳實踐

腳本引起的問題是它們阻止了並行下載。 HTTP / 1.1規范建議瀏覽器每個主機名並行下載不超過兩個組件。 如果您從多個主機名提供圖像,則可以並行執行兩次以上的下載。 但是,在下載腳本時,即使在不同的主機名上,瀏覽器也不會啟動任何其他下載。

在某些情況下,將腳本移到底部並不容易。 例如,如果腳本使用document.write插入頁面內容的一部分,則無法在頁面中向下移動。 可能還存在范圍問題。 在許多情況下,有辦法解決這些問題。

經常出現的另一種建議是使用延遲腳本。 DEFER屬性指示腳本不包含document.write,並且是瀏覽器可以繼續呈現的線索。 不幸的是,Firefox不支持DEFER屬性。 在Internet Explorer中,腳本可能會延遲,但不是所需的。 如果可以延遲腳本,也可以將其移動到頁面底部。 這將使您的網頁加載速度更快。

因此,一般來說,最好將它們置於底部。 然而,它並不總是可能的,並且它通常不會產生那么大的差異。

正如其他人所說,當你將javascript放在頭部時,它會延遲頁面的呈現,直到腳本加載完畢,這意味着頁面可能需要更長時間才能加載 - 特別是如果你正在下載大型腳本文件。

如果將腳本標記移動到頁面末尾,則將確保瀏覽器在腳本標記之前下載圖像和樣式表,並且在腳本開始運行之前可能會顯示頁面。 這也意味着,如果您依賴腳本中的某些功能,則只有在用戶可以看到該頁面之后,才能使用此功能。

如果要添加樣式或元素(以及使用某種形式的更豐富的編輯器切換文本字段),則用戶可以將其視為閃爍。

如果要向元素添加單擊事件,則在元素本身可見之后,它們將無法單擊。

有時候這些問題需要你把你的腳本放在頭腦中,有時你可以把它們放在底部。

恕我直言(完全反對YSlow和很多聰明的人)你應該將你的腳本保留在head標簽中,並且只需要在大多數時候依賴它們進行緩存。

通常,您應該在頁面底部放置腳本引用。 腳本不僅需要下載,還必須在塊發布之前評估和執行,並且頁面繼續進行渲染過程。 像Modernizr這樣的東西應該放在頂部,因為它會執行一些功能檢測以及您可能想要的HTML5填充程序。

您想要嘗試在頁面底部放置腳本的另一個原因是單點故障或SPOF。 這是腳本調用超時或出於某些其他原因阻止頁面執行的地方。 第三方廣告圖書館等可能會發生很多事情。

是的,您可能需要更加努力地思考如何構建應用程序,但我發現它對我來說非常自然。 在過去的4年中,我已經構建了數百個Web應用程序,底部的腳本可以區分出來。 我可能是500毫秒它可能是5000毫秒,但這一切都很重要。

這真的取決於你的網站。 如果您正在訪問並調用正文中的JavaScript函數,則必須在標題中引用它以便加載它。 否則,如果您只是在加載整個文檔時調用JavaScript,那么將JavaScript放在正文末尾是明智的。 通過將.JS文件放在最后,您可以加載整個頁面,然后獲取.JS文件。 這樣,用戶將能夠快速查看頁面,並且當他/她熟悉頁面時,已經下載了.JS文件。

在頁面加載之前,將評估頭部中的任何javascript,這意味着頁面感覺加載需要更長時間。 如果所有的javascript都在最后,讓事件正常工作會稍微困難,但jQuery幾乎可以解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM