9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

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

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

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

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

关注

评论

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

唐太宗把微服务的“心跳机制”玩到了极致!

悟空聊架构

微服务 Eureka 悟空聊架构 6月月更 心跳机制

DOM 节点

Jason199

DOM js DOM事件 6月月更

Java String 文字(Literal)和 对象(Object)初始化

HoneyMoose

面试突击59:一个表中可以有多个自增列吗?

王磊

Java 面试

一文走近ZMQ

No Silver Bullet

6月月更 ZMQ

数据治理的重要性

奔向架构师

数据治理 数据资产 6月月更

redis精讲系列介绍七-过期策略

Nick

Redis 核心技术与实战 6月月更 redis精讲 redis 过期策略 redis 底层原理

Java String 手工引用指针

HoneyMoose

Java String 性能和优化

HoneyMoose

【愚公系列】2022年06月 通用职责分配原则(九)-受保护变量原则

愚公搬代码

6月月更

JAVA SOCKET编程——TCP/UDP

乌龟哥哥

6月月更

我对新能源汽车的一些看法(37/100)

hackstoic

新能源汽车 生活杂谈

Java String 构造方法中的内存分配

HoneyMoose

axios框架入门教程

倔强的牛角

axios 6月月更

Gitlab运维篇之——备份及恢复

阿呆

#GitLab 备份恢复

Go Web 编程入门:验证器

宇宙之一粟

Go 语言 表单校验 6月月更

Java 字符串引用(String Interning)

HoneyMoose

IDE 的主题应该用亮色还是暗色?终极答案来了!

胡说云原生

ide vscode IDEA goland ide主题

再次认识 WebAssembly

devpoint

typescript webassembly 6月月更

JVM调优简要思想及简单案例-老年代空间分配担保机制

zarmnosaj

6月月更

leetcode 279. Perfect Squares 完全平方数(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

Mac 虚拟机UTM安装Ubuntu

IT蜗壳-Tango

IT IT蜗壳 6月月更

Fabric.js IText 手动设置斜体 🎋

德育处主任

JavaScript 前端 canvas Fabric.js 6月月更

5道面试题,拿捏String底层原理!

码农参上

string 底层原理 死磕 Java 基础

Linux开发_curl调用网络接口

DS小龙哥

6月月更

滴滴工程效能平台建设之路

laofo

互联网 DevOps 研发效能 持续交付 工程效能

如何使用物联网低代码平台进行报表管理?

AIRIOT

物联网 低代码平台

Eureka的InstanceInfoReplicator类(服务注册辅助工具)

程序员欣宸

Java SpringCloud 6月月更

DOM编程

大熊G

JavaScript 前端 6月月更

钟珊珊:被爆锤后的工程师会起飞|OneFlow U

OneFlow

自我介绍 实习

Java自定义Once方法保障单次执行

FunTester

  • 扫码添加小助手
    领取最新资料包
Ruby on Rails创始人DHH谈如何进行混合移动APP开发_Ruby_李士窑_InfoQ精选文章