我剛讀完Javascript模塊上的這個article。我可以理解CommonJS模塊是同步加載的,而AMD模塊是異步加載的。javascript - 爲什麼有同步和異步模塊的規範?
我不明白的是,我怎麼能模塊成爲神奇同步如果我把它寫在CommonJS的格式,或者它是如何成爲奇蹟般地異步如果我把它寫在AMD格式。我的意思是JavaScript沒有define
或require
關鍵字甚至。他們只是規格而不是庫。
我的意思是模塊加載的行爲取決於模塊加載程序,而不是模塊的結構。如果是這種情況,爲什麼遵循不同類型模塊的編碼模式?
我是否認爲NodeJS世界中的所有庫都是同步加載的,無論它們以什麼格式寫入。瀏覽器空間中的所有模塊都是異步加載的。
如果我上面的假設是正確的,那爲什麼還有UMD的規範?我的意思是如果一個腳本根據它存在的環境加載,那麼爲什麼要爲通用模塊加載做一個規範?
有人可以幫我解決這個問題嗎?
如何加載「模塊」不會改變代碼 - 你對模塊內代碼的假設是你的絆腳石 –
@JaromandaX是的,那麼爲什麼還有模塊規格。你能詳細說明你的意思嗎? –
模塊本身並不是同步的,而是異步的,它只是調用什麼樣的加載器接口。 CJS格式假設一個同步加載器,在瀏覽器上不能很好地工作,所以AMD格式被創建爲允許依賴聲明與異步正文執行(回調)。 AMD也將與同步加載器一起工作。 – Bergi