Ruby on Rails创始人DHH谈如何进行混合移动APP开发
混合型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的答复,参见文章的评论部分。
Ruby on Rails创始人DHH谈如何进行混合移动APP开发的更多相关文章
- 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- 利用最新版的RubyMine2016.2开发Ruby On Rails 程序
经过我的前两篇博文 ”Ruby On Rails环境搭建“ 和”Ruby On Rails 环境搭建MySQL数据库连接“ 我们已经具备了开发Ruby On Rails程序的一切要素,但是天天对着do ...
- Ruby on Rails vs. PHP vs. Python
开发者在开发web应用时,往往会对平台的选择感到困惑,而web专家通常会建议:要考虑几个因素,这些因素包括周转时间.质量.跨浏览器兼容性.与其他框架的整合.数据安全性.易于访问性等. 在考虑了这些因素 ...
- Ruby on Rails 单元测试
Ruby on Rails 单元测试 为什么要写测试文件? 软件开发中,一个重要的环节就是编写测试文件,对代码进行单元测试,确保程序各部分功能执行正确.但是,这一环节很容易被我们轻视,认为进行单元测试 ...
- Ruby on Rails (ROR)类书籍
Ruby on Rails (ROR)类书籍下载地址及其他(整理) Ruby on Rails 如此之热,忍不住也去看了看热闹,现在把一些相关的电子图书下载地址整理下,方便有兴趣的朋友. 2006-0 ...
- Ruby on Rails 开发笔记
安装 Ruby on Rails Install Rails: A step-by-step guide 创建应用 # 创建新的应用程序 $ rails new blog $ cd blog # 启动 ...
- 【转】Ruby on Rails中select使用方法
在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆.常见的有三个..select, select_tag, collection_select(其余的什么sel ...
- Ruby on Rails
Ruby on Rails 是一个可以使你开发,部署,维护 web 应用程序变得简单的框架.在2004年7月,由Rails的创始人大卫·海纳梅尔·韩森从37signals公司的项目管理工具Baseca ...
- Linux超快速安装Ruby on Rails
Linux超快速安装Ruby on Rails 时间 2014-11-25 11:45:11 Flincllck Talk 原文 http://www.flincllck.com/quick-ins ...
随机推荐
- javascript的执行顺序
先看下面两段js程序,先是定义式函数写法: 复制代码 <script type="text/javascript"> function myfunc(){ alert( ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(4)-构建项目解决方案 创建EF DataBase Frist模式
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(4)-构建项目解决方案 创建EF DataBase Frist模式 进行本次文章之前,我们可能需要补充一些 ...
- delphi TSaveDialog
TSaveDialog 预览 实现过程 动态创建和使用保存文件对话框 procedure TForm1.Button1Click(Sender: TObject);begin wi ...
- Qt 学习之路:线程总结
前面我们已经详细介绍过有关线程的一些值得注意的事项.现在我们开始对线程做一些总结. 有关线程,你可以做的是: 在QThread子类添加信号.这是绝对安全的,并且也是正确的(前面我们已经详细介绍过,发送 ...
- Some code changes cannot be hot swapped into a running virtual machine,
翻译一下:不能热交换到运行虚拟机,一些代码变化不能热交换到运行虚拟机,如更改名称或介绍的方法错误运行代码.解决方法:增加.删除类文件或者在一个类中增加.删除方法时,是不能够热部署到服务上的.这时候需要 ...
- android开发之this.finish()的使用 分类: android 学习笔记 2015-07-18 19:05 30人阅读 评论(0) 收藏
在一个Activity用完之后应该将之finish掉,但是,之前在学校里自己摸索着开发时并没有太注意这个问题,因为activity无论是否finish掉对功能的影响貌似都不是那么明显(这是读书时候的观 ...
- isAssignableFrom与instanceof的区别
1.isAssignableFrom针对的是class对象: 2.instanceof是实例. isAssignableFrom是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的 ...
- 第二篇:python高级之装饰器
python高级之装饰器 python高级之装饰器 本节内容 高阶函数 嵌套函数及闭包 装饰器 装饰器带参数 装饰器的嵌套 functools.wraps模块 递归函数被装饰 1.高阶函数 高阶函 ...
- node基础再现--module.exports 和exports
实际上,最最基础的方法,最最原始的方法是module.exports,至于exports,是为了方便书写才出来的,应该说,module.exports 包含exports,所工作的范围更加的广泛! m ...
- java simple check whether a file or directory.
Ref: check whether a file or directory First, make sure the path exists by using: new File(path).ex ...