混合型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交互的引擎,推出了基于ChromiumQt WebEngine,从而实现了对HTML5和QT混合开发的支持。

另外,David还对用户的一些疑问进行了回答,如Derick用户提出的如何解决Android浏览器渲染速度慢的问题、用户Mike Waite提出的如何决定哪些功能要用原生开发的问题、用户Kevin提出的如何扩展和支持离线访问的问题等,更多问题以及David的答复,参见文章的评论部分

Ruby on Rails创始人DHH谈如何进行混合移动APP开发的更多相关文章

  1. 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)

    做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...

  2. 利用最新版的RubyMine2016.2开发Ruby On Rails 程序

    经过我的前两篇博文 ”Ruby On Rails环境搭建“ 和”Ruby On Rails 环境搭建MySQL数据库连接“ 我们已经具备了开发Ruby On Rails程序的一切要素,但是天天对着do ...

  3. Ruby on Rails vs. PHP vs. Python

    开发者在开发web应用时,往往会对平台的选择感到困惑,而web专家通常会建议:要考虑几个因素,这些因素包括周转时间.质量.跨浏览器兼容性.与其他框架的整合.数据安全性.易于访问性等. 在考虑了这些因素 ...

  4. Ruby on Rails 单元测试

    Ruby on Rails 单元测试 为什么要写测试文件? 软件开发中,一个重要的环节就是编写测试文件,对代码进行单元测试,确保程序各部分功能执行正确.但是,这一环节很容易被我们轻视,认为进行单元测试 ...

  5. Ruby on Rails (ROR)类书籍

    Ruby on Rails (ROR)类书籍下载地址及其他(整理) Ruby on Rails 如此之热,忍不住也去看了看热闹,现在把一些相关的电子图书下载地址整理下,方便有兴趣的朋友. 2006-0 ...

  6. Ruby on Rails 开发笔记

    安装 Ruby on Rails Install Rails: A step-by-step guide 创建应用 # 创建新的应用程序 $ rails new blog $ cd blog # 启动 ...

  7. 【转】Ruby on Rails中select使用方法

    在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆.常见的有三个..select, select_tag, collection_select(其余的什么sel ...

  8. Ruby on Rails

    Ruby on Rails 是一个可以使你开发,部署,维护 web 应用程序变得简单的框架.在2004年7月,由Rails的创始人大卫·海纳梅尔·韩森从37signals公司的项目管理工具Baseca ...

  9. Linux超快速安装Ruby on Rails

    Linux超快速安装Ruby on Rails 时间 2014-11-25 11:45:11 Flincllck Talk 原文  http://www.flincllck.com/quick-ins ...

随机推荐

  1. MFC——error LNK2005: "protected: static struct AFX_MSGMAP

    好久没弄VC程序了,今天弄了下,还会用公司给的窗口重绘作为基类来实现,竟然报了这个错误. 找了一下是这里: 有个窗口重绘类是基类: class CBaseDlg : public CDialog 新建 ...

  2. C# 父类的属性赋值给子类的方法

    遍历父类的属性赋值给子类的方法: private static ChildClass AutoCopy(ParentClass parent) { ChildClass child = new Chi ...

  3. centos6.5 64位 openvpn安装配置

    1 查看系统版本 2 cat /etc/redhat-release 3 CentOS release 6.5 (Final) 4 5 查看内核和cpu架构 6 uname -rm 7 2.6.32- ...

  4. Android开发--推送

    需要的知识点:Notification.Service 第三方开源框架 : android-async-http-master 推送的来源:android项目中,有时会有这样一种需求:客户每隔一段时间 ...

  5. c++ Cout 输出格式

    控制符是在头文件iomanip.h中定义的对象.使用前必须把iomanip.h包含进来 1. I/O的书写格式 I/0流是输入或输出的一系列字节,当程序需要在屏幕上显示输出时,可以使用插入操作符“&l ...

  6. js正则实现用户输入银行卡号的控制及格式化

    //js正则实现用户输入银行卡号的控制及格式化 <script language="javascript" type="text/javascript"& ...

  7. 可以打开mdb文件的小软件

    下载地址: http://dl-sh-ocn-1.pchome.net/09/rh/DatabaseBrowser.zip

  8. 解决右滑返回手势和UIScrollView中的手势冲突

    当在一个viewController中添加了scrollView或者tableView的时候,贴边侧滑返回的时候会首先触发滚动而失效,要解决这个问题,需要通过requireGestureRecogni ...

  9. 狗狗40题~(Volume B)

    H - Sorting Slides 应该是个二分匹配的模板题的,但我还不会写 = = 其实数据规模很小,就用贪心的方法就水过了(没加vis判冲突wa了几发,从此开始艰难的没有1A 的生活) #inc ...

  10. clipboard.js IE下 不允许复制时, 问题修改

    问题描述:https://github.com/zenorocha/clipboard.js/wiki/Known-IssuesOn IE9-11 there's a prompt that asks ...