hcliuLoad靜態(tài)資源增量更新
依賴node.js環(huán)境 依賴java環(huán)境
node.js 安裝
http://nodejs.org/ 下載最新版本安裝
安裝完成后 在windows的命令行 輸入 node回車
如果成功進入node環(huán)境 則說明安裝正確
java 安裝
http://www.java.com/zh_CN/download/manual.jsp#win
工具所有配置文件為不嚴(yán)格的json格式(不要求鍵名使用雙引號 鍵名和值都可以使用單引號等等);
成功打包后程序自動退出
打包失敗后程序暫停并提示 等待用戶關(guān)閉
只能同時運行一個打包程序 否則會提示用戶
下載最新版本安裝
安裝完成后 在windows的命令行 輸入 java回車
如果顯示java幫助回顯 則說明安裝正確
使用方法:
node c:\build\build.js d:\info\news\build.conf d:\info\news\ver.conf
第二個參數(shù)為本工具所在路徑
第三個參數(shù)為項目打包配置路徑
第四個參數(shù)為項目靜態(tài)資源版本配置路徑
工具配置:
setting.conf
// yui jar包路徑
cssCompiler: './lib/yuicompressor-2.4.7.jar',
// google cloure jar包路徑
jsCompiler: './lib/compiler.jar',
// 臨時文件目錄
temp: '_temp'
項目配置:
ver.conf: 版本配置 (此處只需第一次使用時配置 以后會自動更新)
// 當(dāng)前版本 前7位是日期 后面兩位是個人標(biāo)識 后三位是此項目今天第幾次打包,打包程序會每次把后3為加1,
//前端load程序會判斷后三位間隔是否為1,只有為1才啟用增量更新,否則使用全量,如果不支持loadstorage,
//則程序會自動切換到script標(biāo)簽?zāi)J郊虞d
ver: '2013051401067',
// 個人標(biāo)識
personalFlag: '01',
build.conf: 打包配置 (此文件上傳到svn 在項目內(nèi)共享)
{
// 鍵名為目標(biāo)文件 {ver}會替換成版本號 {md5}會計算文件md5
'./release/client-{ver}.js': {
//增量更新算法中塊的大小,具體看原理文檔
chunkSize:12,
// files 為需要合并的文件 支持本地路徑 和 http url
files:['client.js']
}
}
以client.js為例,第一個版本運行build.bat后會在release目錄生成client-2013062801001.js,
第二次發(fā)布修改了client.js,運行buile.bat,會生成client-2013062801001_2013062801002.js,
client-2013062801002.js
在需要引入這個的js里面首先需要引入hcliuLoad.js
<script type="text/javascript" src="hcliuLoad.js"></script>
然后:
<script>
/*
@param url js地址,參數(shù)表版本號
@param store 表示是否存入localstorage
@param mode 表示更新模式,只有store為true的時候才有作用,inc 為true表示增量更新,為false表示全亮更新,function是callback函數(shù)
hcliuRequire.load({"url":"http://test.com/client.js?2013062801002","store":true,"inc":true},function(){alert("load callback!")});
*/
hcliuLoad.load({"url":"http://test.com/client.js?2013062801002","store":true,"inc":true},function(){alert("load callback!")});
</script>
這樣前段會根據(jù)規(guī)則引入client-2013062801001_2013062801002.js或者 client-2013062801002.js
如果上一個版本有本地存儲,且后三位版本號間隔為1,則引入client-2013062801001_2013062801002.js,并跟老文件合并成新的js,存入本地存儲
否則引入client-2013062801002.js進行全量更新
