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模块热加载的效果
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。