混合型 APP 兼具原生型 APP 软件良好用户交互体验的优势和网页型 APP 软件跨平台开发的优势,并且其开发成本和网页型 APP 软件接近,其开发效率也远高于原生型 APP 软件。混合型 APP 已经被众多企业所认可。最近,Ruby on Rails 作者 David 发表了一篇关于如何进行混合开发移动APP 的文章,现对该文章进行一个全面的梳理并转述,以供读者阅读、参考。
文章中首先提到了 37signals 在 2013 年前就进行了混合开发的许多尝试,不过当时 HTML 在移动端的性能还不尽人意。而当今,在移动 APP 开发设计时,移动设备的计算能力已经非常强大,对于信息处理等应用来说 HTML 应用的运行效果和原生应用的效果差别不大,采用混合开发的方式已经是非常合适了。
文章中还列举了他们三代移动产品的演进,第一代产品是通过原生外壳并嵌套 WebView 来实现。第二代产品是原生外壳加上原生导航界面,只有具体页面才是 HTML 形式。当前,他们正在因地制宜地选择需要使用原生开发的功能进行着开发第三代产品。纵观三代产品的开发,从之前的 100%HTML 到现在的 90%HTML 加上 10% 原生代码,他们已经做到了使得 APP 原生部分和 HTML 部分的体验几乎没有什么区别。混合开发模式在技术方面主要是处理 WebView 的集成、Web 页面的加载以及原生内容与 HTML 内容之间的交叉链接。HTML 方面,他们使用 Rails Web 应用以支持 Web 和移动两大平台。在这种开发模式下,因为大部分的代码逻辑在 Web 服务器端,所以这些代码可以随时修改代码并发布,从而大大减轻了开发人员的工作量、提高了 Bug 修复效率以及降低了开发的复杂度和维护成本。
文章最后还提出了混合开发模式对原生开发模式的挑战,如 APP 中有很多地方需要原生开发、在原始应用上已经花了很多时间且使得 UITableView 看起来效果非常好以及许大公司本身的开发风格就是喜欢耗时耗力的原生开发等情况。
总之,混合开发应该能够成为当下移动开发策略的一个重要选择,如最近发布的 Qt 5.4 正式版就重新设计了与 HTML5 Web 交互的引擎,推出了基于 Chromium 的 Qt WebEngine ,从而实现了对 HTML5 和 QT 混合开发的支持。
另外,David 还对用户的一些疑问进行了回答,如 Derick 用户提出的如何解决 Android 浏览器渲染速度慢的问题、用户 Mike Waite 提出的如何决定哪些功能要用原生开发的问题、用户 Kevin 提出的如何扩展和支持离线访问的问题等,更多问题以及 David 的答复,参见文章的评论部分。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论