SDK的项目折腾了一个月,终于快到收获的时候,把这过程中的一些心得体会记录一下吧~
资源文件的更新,是在浏览器下次刷新的时候才会生效。
包含manifest的Html主文件默认会被缓存,类型是Master Explicit。
在测试的时候,我还发现,Master Explicit的更新机制,和其他资源文件并不完全相同,有时候修改manifest文件,浏览器不更新主Html文件。所以我平时都干脆把主Html文件,也放入到manifest的cache列表中,保证最多两次刷新浏览器,主Html文件可以得到更新。
建议:
如果想用好manifest机制来做离线缓存功能,最好手动把applicationCache对象中的缓存更新、刷新浏览器的功能实现,便于日后文件更新,相关信息可以看以前的文章。
Hybrid App的离线功能,还可以配合localStorage、WebViewCache等搭配实现,可控性更佳。
因为我没做个原生App的开发,对Eclipse不熟练,App底层的那套测试方法我都不懂,就自己琢磨出一种测试的方法。
JS解耦测试:
把JS流程中的很多判断条件,统统写在js的公共变量里面,这样的话,js脱离native环境,可以通过浏览器来修改每个公共变量,来模拟App的各种事件。
//js code
(function() {
var app = window.app = {};
var app.isViewable = true;
app.run = function() {
if(app.isViewable === true) {
alert('App is run on screen');
} else {
alert('App is run on background');
}
}
})();
//native code
handleViewableChange(state) {
if(state === true ){
app.isViewable = true;
} else {
app.isViewable = false;
}
}
善用浏览器中的中端、单步、Profiles等测试功能,做到在与Native整合的之前,就测试好大部分的js代码。
估计说出来也没多少人相信,在项目开始之前,我几乎没有写原生JS的经验。不过,人的潜能总是被逼出来的,一个月下来,我从最简单的写过程JS,到现在掌握了对象的继承等。
在JavaScript的世界中,一切皆对象(请允许我装13一下),但是,这里的对象,并不是我们平常所说的类的实例化后的对象。
从上面的截图可以看到,定义一个空对象obj,它的prototype是Object。JavaScript的继承都是通过对象的prototype来实现的。
Private Methods的实现:
在一个闭包空间里面,通过 function __privateFunc() {}来定义私有方法。公共方法使用上面的方法暴露给window。
对于JavaScript的感触,还有很多很多,下次再开篇文章来写写吧。