已經研究了在腳本標記中使用async
和defer
。鑑於以下...實際上使用腳本異步或推遲使用框架角度
異步 - 允許其餘的HTML解析,而JS腳本正在加載。腳本完全加載後,將暫停解析器以執行該腳本。但請注意,加載的訂單號 無法控制。
推遲 - 也允許其餘的html解析,但加載的 js只有在html解析完成後纔會執行。
所以,如果你能負擔得起,顯示你的HTML沒有加載您的js腳本 第一...使用
async
。如果涉及多個腳本並且它們被加載的順序很重要,則使用defer
。另一方面,如果您的腳本必須首先加載(並且不能被重寫爲允許首先解析HTML),那麼只需加載腳本,而不在頁眉中使用async
或defer
。
這將如何適應像AngularJS這樣的現代框架...因爲延遲它們的加載導致了一個錯誤。任何指針將不勝感激。
可能重複[腳本標記 - 異步&延遲](http://stackoverflow.com/questions/10808109/script-tag-async-defer) –
已改變上述問題。請提供反饋。 – Grateful
Angular只需在你的自定義腳本之前加載,否則你會得到錯誤,因爲角度沒有定義,所以異步不是一個好主意。延期將工作。使用延遲可能更簡單的另一個選項是簡單地將腳本標記放在html body元素的底部,以便將它們加載到html之後。 – Binvention