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模块热加载的效果

阅读 1k

码农奶粥
xiao海无涯苦揍舟~

xiao海无涯苦揍舟~

3 声望
0 粉丝
0 条评论
你知道吗?

xiao海无涯苦揍舟~

3 声望
0 粉丝
宣传栏