美文网首页iOS开发
iOS开发——最简单web容器化框架

iOS开发——最简单web容器化框架

作者: coderanger | 来源:发表于2017-05-23 16:18 被阅读30次

    随着混合开发的流行,在 iOS 开发中,web 容器已经成为任何一款中型及以上规模 App 必备的模块,甚至一些小型 App 中你也或发现不可或缺。除了常规展示 web 页面之外,统一 web 页面风格、统一 web 页面调用原生代码的能力等也是目前比较通用的做法。这篇文章就介绍一下,用最简单的方式,搭建一款 App 中不可或缺的 web 容器框架。

    WebView

    既然要承载 web 页面,一个原生的 WebView 必不可少。在 iOS 中,目前已经有两款高性能、功能齐全的 web 浏览器,UIWebView (>=2.0)和 WKWebView(>=7.0)。

    当然,两种 web 浏览器选其一即可。网上有很多文章,包括我之前已经发表的博文中,都介绍过这两种浏览器,读者可以根据自己的需要选择。

    就目前的情况看,UIWebView 发展了很多年,目前市面上大部分的 web 页面也都支持这样的浏览器,因此很多公司在选择的时候都使用这个,但是,我们知道,WKWebView 有太多改善前者的优点,而且也是苹果官方提倡大家使用的,为了性能,为了更多的特性,建议初次搭建的朋友采用 WKWebView。

    Bridge

    为了实现 h5 与 native 之间的互相调用,我们需要在两者之间架一层桥来实现,关于 bridge,之前的文章也有介绍。
    bridge 的功能包括:native 调用 h5,h5 回调 native,h5 调用 native,native 回调 h5。
    有了 bridge,h5可以使用 native 支持的更多特性,native 可以获取 h5 页面加载的信息,也可以让 web 页面动态执行一些脚本做一些事。
    总之,在 web 容器框架中,这个 bridge 还是很有必要的。

    资源缓存

    嗯,这个是辅助项,做了这一步可以进一步提高 web 容器的加载性能,而且资源缓存到本地后可以做到不依赖网络,提高用户体验。
    通常有两种做法,

    1. 一次性下载并缓存所有资源
    2. 按需下载并缓存资源。
      对于 UIWebView 而言,可以充分利用 NSURLProtocol。进行资源请求的拦截处理实现预下载和本地资源加载。

    UIWebView + WebViewJavascriptBridge + NJKWebViewProgress

    UIWebView 使用简单,而且现在用户的手机性能也已经不再是页面展示性能的瓶颈,所以,这里介绍的依然采用 UIWebView 作为 web 浏览器。

    WebViewJavascriptBridge 是一款非常强大的第三方开源 bridge 库,同时支持 UIWebView 和 WKWebView。
    git 地址

    NJKWebViewProgress 是一款能使 UIWebview 显示加载进度的第三方开源框架,支持代理协议处理和 progressview 展示两种功能。
    git 地址

    相关文章

      网友评论

        本文标题:iOS开发——最简单web容器化框架

        本文链接:https://www.haomeiwen.com/subject/blqgxxtx.html