您的位置:首页 > Web前端 > JavaScript

SeaJS 里版本号和时间戳管理的最佳实践

2015-12-28 00:00 731 查看
摘要: SeaJS 里版本号和时间戳管理的最佳实践

http://lifesinger.wordpress.com/2011/08/01/best-practice-of-version-management/

SeaJS 里版本号和时间戳管理的最佳实践

with 24 comments
用 seajs 组织项目,上线后,经常需要更新特定文件或所有文件的时间戳,以清空浏览器缓存。最简单的方式是:

define(function(require, exports) {
var a = require('path/to/a.js?20110801');
});

这种方式很简单直观,弊端也很明显:文件一多,时间戳会分散在各个文件,维护起来不方便。
第二种方式是利用 alias:

seajs.config({
alias: {
'jquery': 'jquery/1.6.2/jquery',
'backbone': 'backbone/0.5.1/backbone',
'a': 'a.js?20110801',
'b': 'b.js?20110801'
}
});

这种方式用来维护 jquery 等类库模块的版本号是非常方便的。但用来加时间戳,文件一多时,依旧不方便。
第三种方式是利用 map:

seajs.config({
'map': [
[ /^(.*\.(?:css|js))(.*)$/i, '$1?20110801' ]
]
});

这种方式,用来批量更新时间戳是最方便的。

最佳实践

假设文件存放路径如下:

http://example.com/libs/seajs/1.0.0/sea.js http://example.com/libs/jquery/1.6.2/jquery.js http://example.com/libs/backbone/0.5.1/backbone.js http://example.com/app/xxx/a.js http://example.com/app/xxx/b.js http://example.com/app/xxx/c.css[/code]
为了方便版本和时间戳管理,建议配置如下:
config.js:

seajs.config({
alias: {
'jquery': 'jquery/1.6.2/jquery',
'backbone': 'backbone/0.5.1/backbone'
},
map: [
[ /^(.*\/app\/xxx\/.*\.(?:css|js))(?:.*)$/i, '$1?20110802' ]
]
});

这样配置好后,在具体模块代码里,就不再需要考虑时间戳了:
define(function(require, exports) {
var $ = require('jquery');
var BB = require('backbone');

var a = require('./a');
var b = require('./b');
require('./c.css');

// ...
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: