Base 北京的同学看过来!3 月 24 日 阿里云瑶池数据库峰会将在北京落地。报名请戳👉 了解详情
写点什么

Ruby on Rails 创始人 DHH 谈如何进行混合移动 APP 开发

  • 2014-12-24
  • 本文字数:1076 字

    阅读完需:约 4 分钟

混合型 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2014-12-24 07:256802
用户头像

发布了 92 篇内容, 共 42.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

跟着卷卷龙一起学Camera--CCM

卷卷龙

ISP 9月月更

开发者有话说|时间过得真快,我也是一个“奔三”的人了

武师叔

个人成长

干货分享|使用 Istio 实现灰度发布

北京好雨科技有限公司

istio #Kubernetes#

用户组角色绑定(原生element-plus-ui表格)

青柚1943

Element Plus Vue3 Typescript

数字化转型新抓手:一看就懂的《企业应用现代化行动指南》(附下载)

York

容器 微服务 云原生 应用现代化

[SSM]SSM整合①(整合配置)

十八岁讨厌编程

Java 后端开发 9月月更

【云原生 | 从零开始学Kubernetes】一、kubernetes到底是个啥

泡泡

云计算 云原生 k8s 9月月更

监控系统的阶段建设

穿过生命散发芬芳

监控系统 9月月更

kube-prometheus 监控系统使用与总结

CTO技术共享

通过爬虫爬取一些图片

吉师职业混子

9月月更

40 岁程序员会有哪些肺腑之言?这篇文章告诉你

宇宙之一粟

学习 程序员 读书感悟 9月月更

概述构建应用智能运维系统的核心能力

阿泽🧸

智能运维 9月月更

C++学习---cstdio的源码学习分析04-创建临时文件函数tmpfile

桑榆

c++ 源码阅读 9月月更

《简单记个笔记》之表单标签加CSS选择器

吉师职业混子

9月月更

数据平台发展史-从数据仓库数据湖到数据湖仓

明哥的IT随笔

hadoop spark 数据仓库 数据湖 湖仓一体

ESP32-C3入门教程 基础篇(四、I2C总线 — 与SHT21温湿度传感器通讯)

矜辰所致

I2C I2C协议 ESP32-C3 9月月更

面试突击85:为什么事务@Transactional会失效?

王磊

Java 面试

【数据结构】五分钟带你了解及自定义有向图

迷彩

数据结构 算法 无向图 9月月更 有向图

2022-09-20:以下go语言代码输出什么?A:8 8;B:8 16;C:16 16;D:16 8。 package main import ( “unsafe“ “fmt“ )

福大大架构师每日一题

golang 福大大 选择题

Web3.0杂谈-#001(47/100)

hackstoic

Web3.0

开发者有话说|情分 or 本分

卷卷龙

个人成长 职场 PUA

EMQ走进亚马逊云科技:携手云端,共筑「面向未来」的IoT基础设施底座

EMQ映云科技

物联网 IoT 解决方案 亚马逊云科技 9月月更

Ubuntu服务器上部署Kubernetes集群

CTO技术共享

springboot搭建基于minio的高性能存储

CTO技术共享

开发者有话说 | 一个普通人的前端职业成长之路

范文杰

个人成长

RAID(独立冗余磁盘阵列)

阿柠xn

Linux 运维 操作系统 raid 9月月更

4 分钟优化 Fetch 函数写法~

掘金安东尼

前端 9月月更

阿里云PolarDB-X 荣获“2022 OSCAR 尖峰开源项目及开源社区”奖

阿里云数据库开源

阿里云 分布式数据库 开源数据库 PolarDB-X 可信开源

SSM整合(功能模块的开发)

十八岁讨厌编程

Java ssm 后端开发 9月月更

SSM整合(接口测试)

十八岁讨厌编程

Java SSM框架 后端开发 9月月更

ESP32-C3入门教程 基础篇(三、UART模块 — 与Enocean无线模块串口通信)

矜辰所致

ESP32-C3 9月月更 UART

Ruby on Rails创始人DHH谈如何进行混合移动APP开发_Ruby_李士窑_InfoQ精选文章