對(duì)于同步模塊,模塊必須提前加載進(jìn)內(nèi)存中。
對(duì)于異步模塊,比如說他的實(shí)現(xiàn)requirejs,依賴前置,且提前執(zhí)行,這不也是提前加載進(jìn)內(nèi)存了嗎,那為什么說是異步的?看了很多AMD和CMD的知識(shí),就是不太明白同步模塊加載和異步模塊加載的區(qū)別。
這個(gè)機(jī)制和【內(nèi)存】關(guān)系并不大,更多可以理解為【腳本的下載時(shí)機(jī)】。
前端的特殊性在于,腳本文件的體積和下載時(shí)間,會(huì)直接影響頁面性能。同步加載的規(guī)范中,所有依賴必須下載好后,腳本才能執(zhí)行。
而異步加載的規(guī)范中,只有代碼運(yùn)行到需要的位置時(shí),才會(huì)加載所需要的腳本。例如一個(gè)巨大的單頁應(yīng)用,首頁部分的腳本可以特別輕,而進(jìn)入某個(gè)功能頁時(shí),再異步加載需要的模塊,這樣對(duì)性能有很大的幫助。
requirejs的異步加載本質(zhì)上是在<head>里append需要異步加載的<script>,這些<script>元素都有async屬性來實(shí)現(xiàn)非阻塞異步加載。然后通過onload監(jiān)聽各個(gè)腳本加載完成狀態(tài),來實(shí)現(xiàn)多個(gè)存在依賴關(guān)系的腳本先后加載次序??梢宰约河胊sync和onload實(shí)現(xiàn)簡單的異步加載功能,但要實(shí)現(xiàn)requirejs這樣的功能,還是要花不少心思的。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)