文章詳情頁
javascript - 異步模塊的理解
瀏覽:85日期:2023-03-19 10:05:47
問題描述
對于同步模塊,模塊必須提前加載進內存中。對于異步模塊,比如說他的實現requirejs,依賴前置,且提前執行,這不也是提前加載進內存了嗎,那為什么說是異步的?看了很多AMD和CMD的知識,就是不太明白同步模塊加載和異步模塊加載的區別。
問題解答
回答1:這個機制和【內存】關系并不大,更多可以理解為【腳本的下載時機】。
前端的特殊性在于,腳本文件的體積和下載時間,會直接影響頁面性能。同步加載的規范中,所有依賴必須下載好后,腳本才能執行。
而異步加載的規范中,只有代碼運行到需要的位置時,才會加載所需要的腳本。例如一個巨大的單頁應用,首頁部分的腳本可以特別輕,而進入某個功能頁時,再異步加載需要的模塊,這樣對性能有很大的幫助。
回答2:requirejs的異步加載本質上是在<head>里append需要異步加載的<script>,這些<script>元素都有async屬性來實現非阻塞異步加載。然后通過onload監聽各個腳本加載完成狀態,來實現多個存在依賴關系的腳本先后加載次序。可以自己用async和onload實現簡單的異步加載功能,但要實現requirejs這樣的功能,還是要花不少心思的。
標簽:
JavaScript
相關文章:
1. python小白 關于類里面的方法獲取變量失敗的問題2. thinkPHP5中獲取數據庫數據后默認選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙3. linux運維 - python遠程控制windows如何實現4. Python2中code.co_kwonlyargcount的等效寫法5. javascript - 如何用最快的速度C#或Python開發一個桌面應用程序來訪問我的網站?6. django - Python error: [Errno 99] Cannot assign requested address7. mysql數據庫做關聯一般用id還是用戶名8. [python2]local variable referenced before assignment問題9. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?10. python小白,關于函數問題
排行榜
