<p> </p> <p>用增量更新這個算法寫了一個requirejs插件storeinc,使用方法以下:</p> <p>首先使用修改後的r.js來進行混淆打包,構建配置以下(請看js/requirejs下的build.js):</p> <p>({</p> <p>    appDir: "../demo/js",</p> <p>    baseUrl: "./",</p> <p>    dir: "../demo/dist",//不走增量更新的文件存放路徑</p> <p>    paths: {</p> <p>        log: "a",</p> <p>        storeinc:"../storeinc"//這裏插件</p> <p>    },</p> <p>    storeinc: true,//說明走storeinc插件</p> <p>    storedir: "../demo/storeincdist",//混淆後的js存放路徑,包括增量文件</p> <p>    lastver:"2", //上一個版本號,若是沒有說明是第一次打包</p> <p>    ver:'3',//新版版本號</p> <p>    chunkSize:12,//增量更新塊號</p> <p>    modules: [</p> <p>        {</p> <p>            name: "test",</p> <p>            exclude: [</p> <p>                "log","b","c","d","storeinc"</p> <p>            ]</p> <p>        },</p> <p>        {</p> <p>            name: "log",</p> <p>            exclude: [</p> <p>               "storeinc"</p> <p>            ]</p> <p>        },</p> <p>        {</p> <p>            name: "b",</p> <p>            exclude: [</p> <p>                "storeinc","log"</p> <p>            ]</p> <p>        },</p> <p>    ]</p> <p>})</p> <p>運行node r.js -o build.js</p> <p>第一次運行時 node r.js :</p> <p>    lastver:"1", //上一個版本號,若是沒有說明是第一次打包</p> <p>ver:'2',//新版版本號</p> <p>而後到js目錄修改各個源文件,第二次運行時:</p> <p>    lastver:"2", //上一個版本號,若是沒有說明是第一次打包</p> <p>ver:'3',//新版版本好號</p> <p>而後在index.html裏面加入以下代碼(請看js/requirejs下的index.html):</p> <p><script></p> <p>//storeinc相關配置</p> <p>var require = {</p> <p>                ver:"3",//當前版本</p> <p>                storeproxy:false,//是否使用代理方式來計算增量更新</p> <p>                paths: {</p> <p>                    storeinc: '../storeinc'//增量更新插件路徑</p> <p>                }</p> <p>};</p> <p></script></p> <p>//主資源下載,記住storeinc!前綴來啓用插件</p> <p>    <script data-main="storeincdist/storeinc!test" src="require.js"></script></p> <p>    <script type="text/javascript"></p> <p>      requirejs.config({</p> <p>            paths: {</p> <p>                log: [</p> <p>                    'a'</p> <p>                ],</p> <p>                 b: [</p> <p>                    'b'</p> <p>                ],</p> <p>                c: [</p> <p>                    'c'</p> <p>                ],</p> <p>                d: [</p> <p>                    'd'</p> <p>                ],</p> <p>                e: [</p> <p>                    'e'</p> <p>                ]</p> <p>            }</p> <p>        });</p> <p>    </script></p> <p>另外須要在業務裏的各個依賴前都加上storeinc!如test.js:</p> <p>require(['storeinc!log','storeinc!c','storeinc!d'], function (log, modC, modD) {</p> <p>    log.write('test3 run!!');</p> <p>    log.write('module c\'s name is ' + modC.name);</p> <p>    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> </p> <p> </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