由于web前端发展历史较长,现在H5技术相对比较成熟。各种移动端的框架,效果直逼原生界面,单拿开发效率来说,移动端原生就比不上H5的开发。H5开发一套可适用Android,也可适用iOS,PC端也可以使用,而不需要单个平台单独开发,效率大大提高。所以也就出现,现在比较流行的混合式开发。说了这么多,全是废话,下面我就那UIWebView跟WKWebView为切入点,说下混合开发的那些事。
UIWebView跟WKWebView都是用来加载一些web页面的。UIWebView出现的较早,在iOS2.0的时候就一直在用,那WKWebView是在iOS8.0之后出来的,WKWebView或逐渐取代UIWebView。当然就目前来说,为了做一些版本兼容。我们还是依旧要使用UIWebview来加载一些本地资源做一些缓存的策略。因为WK只有在iOS9.0之后的版本才添加了加载本地资源的方法。过多的解释的不如直接拿实例来说话,我做了一个小测试。两者共同去加载百度,WK占用的内存极少,UIWebView相对较多。
通过对比,我们可以很直观看到单从内存来看WK已经完胜UIWebView。然而这还不够,WK的优点不止这些:
WKWebView更多的支持HTML5的特性
WKWebView更好的与JS交互
WKWebView高达60fps的滚动刷新率和丰富的内置手势
WKWebView具有Safari相同的JavaScript引擎
WKWebView增加了加载进度属性
优点说完,当然也有缺点。我们现在一般要兼容iOS8.0有些还要兼容iOS7.0。有些本地资源,我们用WK不是那么好实现,系统在iOS9.0之前没用提供加载本地资源的方法。为了做兼容,我们在加载本地资源的时候,还是要用到UIWebView。
网上关于UIWebView与WKWebView的区别有太多文章,这里不再做过多的解释。下面我就从HTML5与JS到OC交互来进行一个小的汇总。