簡體   English   中英

用戶Google Closure延遲加載javascript

[英]User Google Closure to lazy load javascript

我特別喜歡使用Google Closure來要求其他javascript類的功能,但是我想知道是否可以使用goog.require延遲加載其他javascript類。 當我在頁面加載后嘗試使用goog.require時,它似乎刷新了或變成了空白:(可以按需獲取腳本,並且可以通過回調進行設置,因此加載完成后可以運行一些javascript ?

goog.require不能用於加載任何腳本。 但是,按需延遲加載腳本文件沒有什么特別的。 只需動態創建節點並將其添加到您的頁面即可:

function require(src)
{
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = src;
    document.body.appendChild(script);
}

上面的函數將從src參數指定的URL加載腳本。

回調是另一個故事。 加載腳本后不會觸發任何事件。 如果要在腳本加載后得到通知,則需要從腳本本身通知已加載的腳本 例如,您可以在頁面上預定義的函數作為要加載的javascript文件中的最后一條語句來調用。 調用此函數后,您知道腳本已完成加載。 為此,您需要能夠修改已加載的腳本文件。

JSONP使用類似的方法來通知腳本已加載。 使用與上面相同的方法檢索JSONP數據-您將動態創建的腳本節點添加到頁面。 但是,默認情況下,從服務器返回數據不會導致狀態更改。 需要一個函數調用來指示發生了某些事情(例如,數據已到達)。 使用JSONP,您可以在JSONP請求的URL中指定函數的名稱。 然后,服務器返回一段javascript,在其中調用您指定的函數,並將JSON數據傳遞給參數。

所有這些都是建議您在腳本加載后需要能夠在頁面上調用函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM