梳理下Cordova的热更新
公司的大部分都是Hybrid 产品,也就是混合开发,所以比较重要的一个核心功能就是热更新了。
做这个功能的时候中间碰到不少坑,记录一下,比较简单,大致思想就是从服务器拉取JS文件替换掉本地对应文件
之前热更新的一个实现想法就是,在项目初始化的时候,找到项目APP包里面的H5包,一般都是放在www文件夹下,(如果对Cordova完全不了解的可以先看下这个
( http://www.jianshu.com/p/9654783cd1f5 )
也就是会找到这个www文件夹,然后压缩成zip文件,丢到Doc目录下,每次启动的首页路径就是Doc目录的index.html(index.html就是H5项目的启动页)
在不做热更新的情况下是直接启动APP路径里面的index.html
第一次初始化后Doc里面大概是这样
![](http://upload-images.jianshu.io/upload_images/904629-48fa4e3a601c269f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/904629-b4905478243b4edf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
JimuBizPro是目标文件路径,可以随便命名,www文件夹就是www.zip解压出来的东东(---这个zip是Cordova编译后APP里www文件压缩过来的---),里面的内容大都是一些编译后cordova生成的东西,可以自己控制的是h5_biz这个文件夹的东西
举个栗子
生成Cordova项目的时候不是需要把H5的东西放www文件夹里面吗,像这样
![](http://upload-images.jianshu.io/upload_images/904629-89077bb5e61d3256.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
也就是在通过 cordova build之后的www文件夹里面在原来的基础上会多一些cordova的配置文件
这里有一点就是,之前第一个版本是没有h5_biz这个中间层的,在H5跨版本更新的时候会删掉原有的www文件夹,然后再解压
这样就必须保证给的增量包必须要包含有编译后的cordova文件,也就是这样
![](http://upload-images.jianshu.io/upload_images/904629-95d10000173001a0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
但是H5那边提供新包就是纯h5_biz,
这样的结果就是每次要放更新的H5包的时候就必须需要我更新H5编译打包,然后给测试,这样就很没必要了。
在有了h5_biz这个夹层之后,只需要每次删除h5_biz里面的东西,不动cordova的编译文件,这样就可以分离业务出去,每次更新只需要测试那边放新包就行。