在上期的blog里,我们讨论了关于cordova实现热更新的原理。本来我是打算写一个Demo供大家参考的,需要服务器的配合才能做到热更新,而我目前测试的Demo没有服务器挂载,只能在局域网下作为测试用例,所以,放出来大家并不能直接使用,暂时就先不放出来了,我相信如果看了上几期的blog,按照这个思路去实现,做出Demo来是没有困难的。在本期,我们将探讨一下上期中留下的问题。
首先,我们需要通过cordova加载网络资源,涉及到白名单的问题,这个问题由于是cordova编程的具体细节,在这期就不详细介绍了,如果没能解决cordova无法访问网络资源的问题,请移步至cordova官网,上面有详细的介绍,或者搜索网络资源,这个问题的解决方法能搜索到很多,相信大家能解决这个问题的。
然后,由于资源文件在本地,我们通过ajax方式去加载网络数据,这个会造成跨域的问题,相信大家也是能够解决这个问题的。
然后,资源文件在本地,那么,如何去下载服务器上的最新资源文件来覆盖本地的资源文件呢?官方提供的有文件插件,应该也是可以解决的。我没有采用这种方式,而是自定义了android插件,把文件下载、覆盖原有文件等这部分的功能,java代码去实现的,并做成了插件,供js去调用。
然后,可能会存在资源文件的管理问题,比如各个用户的版本不完全一致,那么,如果去管理这些资源文件呢?这个由于我并未部署到项目中,所以,暂时只能想到这么多,并且其中还有猜测的部分在内。如果有实际部署项目的朋友,欢迎指教。
最后,还有资源文件的安全性,该如何确保呢?
这些问题有部分我已经解决了,但还有部分我没有解决掉,虽然是个不成熟的方案,但也是一种探讨,至于能不能实现,在未部署到实际项目、未能保证实际项目的稳定运行之前,这种方案只是一种可能有效的方案,其可行性还需要项目的检验。技术有限,难免有遗漏错误的地方,欢迎指教,同时也欢迎朋友们交流分享自己的经验,谢谢大家!