動態

詳情 返回 返回

Requirejs加載文件、清除緩存 - 動態 詳情

Requirejs加載js問題

在使用

require(['app1'], function (app1) {
      console.log(app1);
    });

加載app1模塊時,不配置requireJs.config中的path時,會請求當前html文件所在路徑下的app1.js
如果找不到,報如下錯誤

require.js:168 Uncaught Error: Script error for "app1.js"
https://requirejs.org/docs/errors.html#scripterror
    at makeError (require.js:168)
    at HTMLScriptElement.onScriptError (require.js:1738)

但是此時,如果再次執行腳本,使用同樣的模塊,並不會報錯

RequireJs不會多次加載js,同一個頁面RequireJs只會加載一次js文件,無論加載是否成功,都會在內部緩存中添加該模塊的緩存,所以不會再去請求js文件。

清除緩存

網上有文章提出採用

requirejs.config({
    urlArgs: "bust=" + (new Date()).getTime()
});

該配置使requirejs在請求js時在url後面加上參數,這種方式在單頁面應用中依然無法生效,多次調用require方法不會多次請求js。但是該方法可以使用到require方法中例如

require(['./app1.js?v='+(new Date()).getTime()], function (app1) {
      console.log(app1);
    });

這種方式每次打開都會請求js,但是對於requirejs來説,每次調用方法都認為是不同的js,會使當前頁面requirejs的緩存擴大。

undef

requirejs提供了方法可以卸載已經加載的模塊,requirejs.undef("module")該方法會清除掉requirejs中的緩存,當下一次調用require方法時,requirejs找不到該模塊的緩存,會去請求js並創建緩存。
使用該方法可以達到js模塊熱加載的效果

Add a new 評論

Some HTML is okay.