js本地存儲和增量更新rstoreinc插件使用

<p>&#160;</p> <p>用增量更新這個算法寫了一個requirejs插件storeinc,使用方法以下:</p> <p>首先使用修改後的r.js來進行混淆打包,構建配置以下(請看js/requirejs下的build.js):</p> <p>({</p> <p>&#160;&#160;&#160; appDir: &quot;../demo/js&quot;,</p> <p>&#160;&#160;&#160; baseUrl: &quot;./&quot;,</p> <p>&#160;&#160;&#160; dir: &quot;../demo/dist&quot;,//不走增量更新的文件存放路徑</p> <p>&#160;&#160;&#160; paths: {</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; log: &quot;a&quot;,</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; storeinc:&quot;../storeinc&quot;//這裏插件</p> <p>&#160;&#160;&#160; },</p> <p>&#160;&#160;&#160; storeinc: true,//說明走storeinc插件</p> <p>&#160;&#160;&#160; storedir: &quot;../demo/storeincdist&quot;,//混淆後的js存放路徑,包括增量文件</p> <p>&#160;&#160;&#160; lastver:&quot;2&quot;, //上一個版本號,若是沒有說明是第一次打包</p> <p>&#160;&#160;&#160; ver:'3',//新版版本號</p> <p>&#160;&#160;&#160; chunkSize:12,//增量更新塊號</p> <p>&#160;&#160;&#160; modules: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; name: &quot;test&quot;,</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; exclude: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;log&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;,&quot;storeinc&quot;</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ]</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; },</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; name: &quot;log&quot;,</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; exclude: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;storeinc&quot;</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ]</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; },</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; name: &quot;b&quot;,</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; exclude: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;storeinc&quot;,&quot;log&quot;</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ]</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; },</p> <p>&#160;&#160;&#160; ]</p> <p>})</p> <p>運行node r.js -o build.js</p> <p>第一次運行時 node r.js :</p> <p>&#160;&#160;&#160; lastver:&quot;1&quot;, //上一個版本號,若是沒有說明是第一次打包</p> <p>ver:'2',//新版版本號</p> <p>而後到js目錄修改各個源文件,第二次運行時:</p> <p>&#160;&#160;&#160; lastver:&quot;2&quot;, //上一個版本號,若是沒有說明是第一次打包</p> <p>ver:'3',//新版版本好號</p> <p>而後在index.html裏面加入以下代碼(請看js/requirejs下的index.html):</p> <p>&lt;script&gt;</p> <p>//storeinc相關配置</p> <p>var require = {</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ver:&quot;3&quot;,//當前版本</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; storeproxy:false,//是否使用代理方式來計算增量更新</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; paths: {</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; storeinc: '../storeinc'//增量更新插件路徑</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p> <p>};</p> <p>&lt;/script&gt;</p> <p>//主資源下載,記住storeinc!前綴來啓用插件</p> <p>&#160;&#160;&#160; &lt;script data-main=&quot;storeincdist/storeinc!test&quot; src=&quot;require.js&quot;&gt;&lt;/script&gt;</p> <p>&#160;&#160;&#160; &lt;script type=&quot;text/javascript&quot;&gt;</p> <p>&#160;&#160;&#160;&#160;&#160; requirejs.config({</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; paths: {</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; log: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 'a'</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ],</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; b: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 'b'</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ],</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; c: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 'c'</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ],</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; d: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 'd'</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ],</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; e: [</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 'e'</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ]</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p> <p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; });</p> <p>&#160;&#160;&#160; &lt;/script&gt;</p> <p>另外須要在業務裏的各個依賴前都加上storeinc!如test.js:</p> <p>require(['storeinc!log','storeinc!c','storeinc!d'], function (log, modC, modD) {</p> <p>&#160;&#160;&#160; log.write('test3 run!!');</p> <p>&#160;&#160;&#160; log.write('module c\'s name is ' + modC.name);</p> <p>&#160;&#160;&#160; log.write('module d\'s name is ' + modD.name);</p> <p>});</p> <p>接下來看下效果:</p> <p>第一次咱們把index.html裏的ver項配置設爲2,而後訪問index.html,結果以下圖所示:</p> <p><a href="http://static.oschina.net/uploads/img/201403/05120723_aWcl.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="wps_clip_image-29258" border="0" alt="wps_clip_image-29258" src="http://static.oschina.net/uploads/img/201403/05120723_WAR7.png" width="204" height="244" /></a></p> <p>第二次咱們把index.html裏的ver項配置設爲3,說明此次須要的是版本爲3的內容,結果以下圖所示:</p> <p><a href="http://static.oschina.net/uploads/img/201403/05120724_WRLX.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="wps_clip_image-13606" border="0" alt="wps_clip_image-13606" src="http://static.oschina.net/uploads/img/201403/05120724_jMON.png" width="225" height="244" /></a></p> <p>說明訪問的是增量文件,已經達到增量更新的目的</p> <p>&#160;</p> <p>&#160;</p> <p>rstoreinc github地址:<a title="https://github.com/luyongfugx/rstoreinc" href="https://github.com/luyongfugx/rstoreinc">https://github.com/luyongfugx/rstoreinc</a></p> <p>好用記得star哦:)</p> <p>另外說一下個人微博:</p> <p><a href="http://t.qq.com/waynelu"><font color="#000000">騰訊:</font>http://t.qq.com/waynelu</a></p> <p>新浪:<a title="http://weibo.com/u/1849616271" href="http://weibo.com/u/1849616271">http://weibo.com/u/1849616271</a></p>javascript

相關文章
相關標籤/搜索