2016-01-21 29 views
3

已經研究了在腳本標記中使用asyncdefer。鑑於以下...實際上使用腳本異步或推遲使用框架角度

異步 - 允許其餘的HTML解析,而JS腳本正在加載。腳本完全加載後,將暫停解析器以執行該腳本。但請注意,加載的訂單號 無法控制。

推遲 - 也允許其餘的html解析,但加載的 js只有在html解析完成後纔會執行。

所以,如果你能負擔得起,顯示你的HTML沒有加載您的js腳本 第一...使用async。如果涉及多個腳本並且它們被加載的順序很重要,則使用defer。另一方面,如果您的腳本必須首先加載(並且不能被重寫爲允許首先解析HTML),那麼只需加載腳本,而不在頁眉中使用asyncdefer

這將如何適應像AngularJS這樣的現代框架...因爲延遲它們的加載導致了一個錯誤。任何指針將不勝感激。

+2

可能重複[腳本標記 - 異步&延遲](http://stackoverflow.com/questions/10808109/script-tag-async-defer) –

+0

已改變上述問題。請提供反饋。 – Grateful

+0

Angular只需在你的自定義腳本之前加載,否則你會得到錯誤,因爲角度沒有定義,所以異步不是一個好主意。延期將工作。使用延遲可能更簡單的另一個選項是簡單地將腳本標記放在html body元素的底部,以便將它們加載到html之後。 – Binvention

回答

0

考慮到Angular應用程序完全依賴於Angular JS文件和依賴關係,除非你有後備(比如加載狀態,或許?),否則延遲或異步它們沒有多大意義。但是,有了這些說法,對所有腳本添加延遲可能會正常工作,但在性能方面做得並不多。添加異步可能會破壞某些東西,因爲某些依賴需要加載到別人之前。