urlArgs解决Require.js浏览器缓存问题
通常项目上线后,可能会存在浏览器缓存导致代码未更新的问题,最简单的办法就是添加版本号,示例如下:
<script src="a.js?v=xx"></script>
<link rel="stylesheet" type="text/css" href="b.css?v=xx">
但是如果项目中是通过require.js加载的文件(js/tpl)的情况,.tpl文件可以直接在路径后添加版本号,.js文件直接添加版本号会报错,所以需要通过urlArgs解决版本号问题。
urlArgs:附加到URL的额外查询字符串参数,RequireJS使用这些参数来获取资源。
require.config({
//固定版本号
urlArgs: "v=xxxxx"
//时间戳版本号
//urlArgs: "v="+new Date().getTime()
});
通过以上任意一种方式都可以破坏浏览器缓存。
根据要求2.2.0,urlArgs可以是一个函数。如果是函数,它将接收模块ID和URL作为参数,并返回一个将添加到URL末尾的字符串。如果没有参数,则返回空字符串。一定要注意添加“?”或“&”取决于URL的现有状态,例如:
requirejs.config({
urlArgs: function(id, url) {
var args = 'v=1';
if (url.indexOf('view.html') !== -1) {
args = 'v=2'
}
return (url.indexOf('?') === -1 ? '?' : '&') + args;
}
});