使用cordova做跨平台开发已久,针对于Android的性能与页面渲染问题仍然让人头疼,因为仍然有一部分人使用性能一般的手机,版本在 4.2-4.4之间,甚至都无法支持HTML5的flex布局,使得我们不得不使用crosswalk以增强我们的webview,但是它给我们带来的确 实使得安装包大了将近20M。话说回来cordova在iPhone6运行真是神速,但是针对于IOS仍然会有一大部分人使用iPhone4系列或者 iPhone5系列,在这些手机上确无法与iPhone6比及,现在WKWebView可以使得它有明显的提升。

  • 聊聊家常

Ionic框架已经日益成熟,它使得我们很轻松就能实现与原生相似的体验,然而APP的速度是一个必要的条件,我们发现大多数NB的APP都有 着一个共同的特点,那就是流畅。其实裸露的cordova的原理就是利用每个平台的本地webview去运行部署在本机的一个web页面,并且能够使用 js调用底层相关的接口。

ios默认的web浏览器是Safari,目前IOS提供了两套不同的webview技术,一个是有点年迈的“UIWebview”,一个是年轻力壮的“WKWebView”,
WKWebView 在性能方面比 UIWebview显著的快,我们称之为“巨快”,现在苹果公司在新发布的ios版本去更新它,因为
Safari的应用程序需要WKWebView,以前由于各种原因是的ionic无法无缝融合
WKWebView,就在今天早上我突然发现ionic已经解决了这个问题,大家记住这个人叫“Manu”,使得我使用中文的方式告诉大家这个好消息,官
方是在2016年08月18日公布的消息。

  • 这意味着什么?

你可以使用WKWebView使得你的cordova应用在IOS更快更流畅,
WKWebView解决了cordova工程面临的诸多问题,如XHR请求和CORS,储存问题,以及一些渲染DOM的性能问题,它升级了本机与网络的接口,这意味这个只想XHR请求的file:协议会被截获并重定向,然而对正常的XHR请求会通过。

不仅如此,
WKWebView运行所耗费的内存有显著的减小,使得启动应用更快(之前我做过实验,针对于“熊猫金融”app,iPhone6,6s启动不到一
秒,iPhone5,5s,5c要4-5秒),使用JIT编译Javascript,提高稳定性和安全性,并且达到了最新的web标准,官方的实验大意是
说他们使用了 WKWebView 之后是内存从160MB降到了20MB,从稳定性来讲,崩溃率下降了70%。

  • 安装步骤

现在ionic已经发布了 wkwebview 的插件 cordova-plugin-wkwebview-engine

地址:https://github.com/driftyco/cordova-plugin-wkwebview-engine

安装插件:

  1. ionic plugin add https://github.com/driftyco/cordova-plugin-wkwebview-engine.git --save

在使用过程中你可以通过测试它是否支持IndexDB来判定是UIWebView还是WKWebView。

  1. if (window.indexedDB) {
  2. console.log("I'm in WKWebView!");
  3. } else {
  4. console.log("I'm in UIWebView");
  5. }

在config.xml配置需要的权限

  1. <feature name="CDVWKWebViewEngine">
  2. <param name="ios-package" value="CDVWKWebViewEngine" />
  3. </feature>
  4. <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />

WKWebView针对于Cordova的IOS平台性能提升的更多相关文章

  1. cordova插件iOS平台实战开发注意点

    cordova插件是其设计理念的精髓部分,创建并使用自定义插件也是一件比较容易的事.但在这个过程中也容易进入一些误区或者有一些错误的理解,下面从笔者实际开发中遇到的问题出发,对其中的一些注意点和重要概 ...

  2. 25条提高iOS App性能的建议和技巧

    这篇文章来自iOS Tutorial Team 成员 Marcelo Fabri, 他是 Movile 的一个iOS开发者. Check out his personal website or fol ...

  3. Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)

    在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...

  4. Cordova - 使用Cordova开发iOS应用实战1(配置、开发第一个应用)

    Cordova - 使用Cordova开发iOS应用实战1(配置.开发第一个应用) 现在比较流行使用 html5 开发移动应用,毕竟只要写一套html页面就可以适配各种移动设备,大大节省了跨平台应用的 ...

  5. 25条提高iOS app性能的方法和技巧

    以下这些技巧分为三个不同那个的级别---基础,中级,高级. 基础 这些技巧你要总是想着实现在你开发的App中. 1. 用ARC去管理内存(Use ARC to Manage Memory) 2.适当的 ...

  6. iOS应用性能调优建议

    本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelofabri.com/,你还可以 ...

  7. iOS应用性能调优的25个建议和技巧

    本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelofabri.com/,你还可以 ...

  8. [转]iOS应用性能调优的25个建议和技巧

    写在前面 本文来自iOS Tutorial Team 的 Marcelo Fabri,他是Movile的一名 iOS 程序员.这是他的个人网站:http://www.marcelofabri.com/ ...

  9. JSBridge(Android和IOS平台)的设计和实现

    前言 对于商务类的app,随着app注册使用人数递增,app的运营者们就会逐渐考虑在应用中开展一些推广活动.大多数活动具备时效性强.运营时间短的特征,一般产品们和运营者们都是通过wap页面快速投放到产 ...

随机推荐

  1. 牛客暑假多校第五场 D inv

    题意:给你一个n, 接来下给你一个 [1,n] 中偶数的排列, 还有一个 [1, n] 中 奇数 按照递增的顺序排列, 现在求一个原数列, 使得偶数列排序 和 奇数列 都是原数列的一个子序列, 现在求 ...

  2. 2018CCPC 吉林现场赛 赛后总结

    一直以来都没有比赛完写总结的习惯,导致前面几次比赛都没有写过总结. 这是我写的第一场总结把,有时间有想法还记得细节的话再把前面几次比赛的总结给补上把. 热身赛: 热身赛的时候,写的比较急想着快点做出题 ...

  3. Period UVALive - 3026

    For each prefix of a given string S with N characters (each character has an ASCII code between 97 a ...

  4. java 高薪计划

    一.基础 集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计. 二.需要全面的互联网主流技术相关知识 深入了解mysql,redis,mong ...

  5. Day003_Linux基础——系统目录结构

    Linux系统的目录结构: 圆型节点代指目录,方型节点代指文件. 图中省去了很多不常用的目录与文件. 稍后单独讲/proc目录与/var目录. /usr 目录. /usr/local 用户个人安装的软 ...

  6. Https、OpenSSL自建CA证书及签发证书、nginx单向认证、双向认证及使用Java访问

    0.环境 本文的相关源码位于 https://github.com/dreamingodd/CA-generation-demo 必须安装nginx,必须安装openssl,(用apt-get upd ...

  7. MySQL-注释-Navicat基本使用-复杂查询练习题-解题思路-pymysql操作数据库-SQL注入-05

    目录 mysql语句注释 navicat 的基本使用 特色(个人总结) 与数据服务器建立连接 创建&打开数据库.表 创建 打开 修改操作表结构 修改表结构 查询修改操作表数据 基本语句对应的操 ...

  8. 《Java 8 in Action》Chapter 10:用Optional取代null

    1965年,英国一位名为Tony Hoare的计算机科学家在设计ALGOL W语言时提出了null引用的想法.ALGOL W是第一批在堆上分配记录的类型语言之一.Hoare选择null引用这种方式,& ...

  9. 记一次oracle新建用户及分配指定表权限的操作记录

    1.登录 2.创建用户create user new用户名 identified by new用户名创建new用户名用户,密码设置为new用户名. 3.授权new用户名用户的连接.资源权限.grant ...

  10. Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...