写点什么

Cordova 是否适用于你的目标行业?

2017 年 9 月 11 日

本文要点

  • Apache Cordova 是一种开发移动 App 的很好选择,它能以合理代价将 App 快速地交付市场。
  • 事实显示,大部分使用 Cordova 创建的 App 是不成功的,并且由于这些 App 表现不佳,用户在失望之余很快就弃用了它们。
  • 要降低失败的风险,重在了解 Cordova 非常适合开发哪些类型的 App。
  • Cordova 不适用于医疗、游戏和金融 App,但非常适合于商业、教育和聊天 App,最好是生活、广告和新闻 App。

Apache Apache Cordova 是一种开发移动 App 的很好选择,它能以合理代价将 App 快速地交付市场。此外,不少 Web 开发人员也选择 Cordova,它可将他们的已有技能重用到创建 App 中,不需要再去学习 Java 或 Objective-C 开发。

这听上去是否非常不错?但是 Cordova(或是 PhoneGap,两者是版本所有者不同的同一软件)仅使用 HTML、CSS 和 JS 技术,因此开发的 App 的功能具有局限性(在这篇文章中详细地介绍了情况及导致原因)。虽然熟悉Java、Objective-C 和C++ 的开发人员知道使用插件这一技巧有助于克服上述局限性,但是Cordova 社区中的大部分人还是必须充分地利用好他们已知的和已有的技能。

当前最好的解决方法,就是了解在哪些领域中Cordova 可以独挑大梁,而在哪些领域中它注定会失败。尽管听上去十分明显,但是一些开发人员依然将Cordova 用到极致。这种固执的行为不仅会导致一些App 项目失败(例如此链接给出的例子,或是一系列此lian 提及的例子),而且对选用Cordova 作为开发工具蒙上了阴影,越来越多的移动应用开发工程师不推荐使用Cordova

是什么抹黑了Cordova?

AppBrain 给出的统计显示,尽管 Cordova 存在各种局限性,但它依然继续在具有质量要求的行业中开发复杂 App。换句话说,开发人员是在赶鸭子上架(译者注:原文是“强迫鱼去爬树”),因为他们从一开始就将 Cordova 用于那些并不适合使用它的项目上。据统计显示,美国的前 500 名热门 App 中,使用 Cordova 开发的仅占 1.40%。这些 App 的安装率更低,只有 0.49%,这至少从正面反映了开发人员的尝试结果并未满足用户的需求。

App 的低采纳率还暗示这样一个事实,那就是证明了大部分使用 Cordova 创建的复杂 App 是不成功的,并且由于这些 App 表现不佳,用户在失望之余很快就弃用了它们。开发人员更易于将矛头对准开发工具,而不会认识到自己对开发工具的要求过多。令开发人员沮丧的是,Cordova 达不到他们所希望的不仅代价低且快速,而且对于其从未企及的领域也是全能的。正是过高的期望毁坏了 Cordova 的声誉。

为澄清是非,在一个项目启动之前,我们应细致地质疑和分析远期 App 的需求以及开发平台的能力。从根本上看,如果考虑以 Cordova 为首要开发工具,应优先确保它能切实地兼容开发人员的需求。

Cordova 不适用于……

医疗 App

复杂的医疗 App 大多严重依赖于探测器。探测器或是已存在于设备中,例如陀螺仪、加速度计等;或是一些配有探测器的可穿戴组件,例如手表、头带、胸带等。移动 App 通过这些传感器测量患者的血压、心率和步频等。

要使这些 App 正常工作,移动端软件应可直接访问硬件,切实地从探测器获取数据。对于 Cordova,只有通过插件才能实现对硬件的直接访问。社区已经提供了一些访问设备内传感器的基本插件,这些插件也是非常稳定的。但是除此之外,其它的插件需要用户定制,或是从头开始做开发,这需要具备额外的编程知识。

游戏 App

游戏需要高质量的图像、平滑的动画和精准的回推,这完全超出了 Cordova 的合理范围。因此,Cordova 开发的 App 无论是否采用插件,对游戏的表现都是平庸的。开发人员所能做到最好的,就是创建类似于贪食蛇这类非常基本的游戏。这类游戏是在 Onsen Ioniс等 UI 框架中设计简单的 UI,而这些 UI 框架都易于在 Cordova 中使用。另一种方法是使用 BrowserQuest 等原始点阵图,但会导致游戏中频繁出现延迟,并且时常突然崩溃,当然也不会构成好的用户体验。

金融 App

移动银行 App 允许用户远程访问并操作银行账户,因此需要提供尽可能高的安全等级。对此 Cordova 无法提供保证,因为它开发的代码是基于 HTML、CSS 或 JavaScript,还组合了 WebView 技术,这导致 App 易于受到 XSS 攻击。对于银行 App,这意味着存在风险,会接受能自由访问并篡改 App 数据的恶意代码。而在 Cordova 中使用安全插件则是一把双刃剑。任一插件都是在 Cordova App 内含的 WebView 上打开一个缺口,进而将危及到安全性。

Cordova 非常适合于……

商业 App

这取决于企业 App 的类型和特定用途。Cordova 对于此领域的销售人员所用 App 表现出色,正如在该电信销售App 中。Cordova 也非常适用于新员工入职过程的App,使他们熟悉企业的产品、服务和指南列表。此外,该平台还适合于交付任务指令手册、HR 雇员调查和合同表格等。因为在这类App 的基本流程中,不需要搭便车去运行高帧率和硬件访问。

但是,如果Cordova 开发的App 中包含了电子合同,那么在没有添加支持触屏输入插件的情况下,无法实现合约的电子签署。此外,由于图像帧率上的限制,也无法实现对App 中的手册交互操作;产品目录也不能过于复杂,因为这需要加载全部数据到Cordova 中的WebView 上,会导致App 长时间无响应。出于上述原因,我们应对App 的结构和视图模式做出仔细的规划。

教育App

对于教育使用的移动App,Cordova 很可能会取得成功。这类App 一般是为教育设施中的主教材提供辅助,或是提供工作场所联合培训的指南。即使不额外使用插件,这些App 也能有效地交付功能。一个用例就是RNAO(安大略省注册护士协会,Registered Nurses’ Association of Ontario)的护理最佳实践指南App 。该App 为护士的实践操提供了便利的参考工具,它是在Cordova 上开发的,可用于Android、iOS 和Blackberry。

因为Cordova 加速了开发过程,因此额外提供了一些可用时间。通过有效地利用这些时间进行测试、调试和调优UI 和UX,可使App 更适合特定受众的需求。例如,如果要交付一个儿童使用的乘法表App,开发人员会有时间去创建更具吸引力和多姿多彩的接口,使得初中学生都会心血来潮去打开App 并更新材料,而非只是交付一个运行于Android 和iOS 的原生App(Native App)。

尽管如此,当面对语音输入和交互手册需求时(这对语言学校或企业培训App 是非常有用的特性),Cordova 就再次撞墙了,只能考虑添加编写的原生插件。

聊天和社交媒体App

Line 这一著名的聊天 App 就是用 Cordova 开发的。主要是由于日本大地震后的严峻形势,其开发商 NHN Japan 需要在尽可能最短的时间内完成该跨平台的解决方案。鉴于 HHN Ja 瞄准将 App 发布到国际市场,因此 Line 广泛地使用了插件,提高并扩展了功能,其中包括加入了 VoIP、视频会议和社交媒体特性。还是有不少用户报告了 App 中时常发生滞后行为,这表明正是由于 Line 的极大丰富特性,导致使用 Cordova 开发力有未逮。

尽管如此,Cordova 平台还是适用于开发一些针对少部分受众且功能需求不复杂的聊天和社交媒体 App。例如, FanReact Hockey community 等 App 提供了时间线功能、为每个用户账户提供了个人空间、支持文本和媒体形式的互动。总而言之,这些 App 可以在不使用插件的情况下提供合理的性能,因为它们不需要重载特性就能实现自身的功能。

Cordova 是最佳的选择……

生活 App

很多生活 App 采用了计算器和通知工具的形式,可有效地在 Cordova 上开发。这些 App 可在不被用户注意到的情况下驻留于移动设备上,直到用户发送预设的提醒,或是知道用户输入了一些需要 App 去存储或计算的信息。例如,帮助用户控制水解速度、糖分和卡路里摄入或是生产力水平的 App。它们可以使用 GetItDone 实现,它是一种基于 Cordova 的任务管理 App。

其它类型的生活 App 包括锻炼计时器和手册(例如 BitTimer Sworkit )、可为医学专家提供参考的数据库(例如 HeatlhTap ) 以及提供健康生活技巧的列表(例如由 Beconfident Skin Care AB 提供的一系列 App)。

事件和广告 App

据 AppBrain 统计,使用 Cordova 开发的 App 中排名第二的就是“事件”类 App,原因非常简单。因为事件是暂时性的,不需要大规模地投资资金和时间,这在原生 App(Native App)开发中是不可避免的。同时,Cordova 可使业务在几天内就形成功能性广告 App,因此在开发市场上报价最低。

由于广告 App 的简单性,且不提供任何高级特性,它们可以在 Cordova 中平滑的开发。对于根据时间表向客户给出一些促销信息、允许用户通过社交类 App 分享优惠或是让用户使用 App 提供在屏幕上的促销卡片,用 Cordova 实现毫无问题。在用于大型活动时,广告类 App 还可以集成企业的 Web 网站,自动更新特殊优惠的信息,并关联最新的在线信息。

新闻、书籍和杂志

Cordova 环境与常见的浏览器一样,适用于信息的浏览功能。Cordova 中使用了原生且不可见的 WebView 浏览器,并包含在 App 自身中,可毫无代价地显示各种类型的文本和静态图像数据。使用这种方式,Cordova 为阅读 App 管理 Web 站点新闻、读取书籍、显示在线新闻和杂志提供了基础。

解决不兼容性

如果你对 Cordova 是否能解决 App 的规划特性心存怀疑,最好从一开始就着手去解决这些怀疑,而不是选择忽略它们。

对于一个处于规划中的 App,如果对其复杂性是否可实现存有疑虑,那么合理的做法是考虑其它的开发平台而非 Cordova。使用其它的开发工具可能将需要特定的移动开发技能,不会像 Cordova 开发那样快速并易于上手,但是如果我们从一开始就使用更为强大的跨平台工具,那么相比起“双重投资”而言,开发过程依然会更快,并且可能代价更低。我们不应冒险使用 Cordova 创建具有丰富特性的 App,这样最终可能只会发现它并不适合需求,然后不得不在另一个平台上重启项目开发。这时我们应正确地选用 Xamarin 或 React JS 去开发 App。

可能重载项目并非是唯一的选择。如果一个由 Cordova 开发的 App 已经交付,但是该 App 响应性差,或是硬件访问受限,那么我们使用一定数量的插件可能会提升它的功能。有一些已经开发出来的插件提供了访问相机等基础特性,Cordova 社区可自由使用。

此外,一些特性可能需要用户定制的插件,或是需要从头开始开发插件。在这种情况下,应外包原生插件或C++ 插件开发。相比于从头开始开发整个移动App,外包的代价更低。关键在于我们不能将Cordova 插件想成是“银子弹”那样的全能解决方案,只需一两个插件可以能提供更为强大的功能,因为大部分插件对性能和安全具有负面的副作用。该问题在混合模式App(Hybrid App)中已作了深入讨论

避免眼大口小

坚持将Cordova 用于那些有高质量需求的行业中,这是导致Cordova 声誉欠佳并且所开发的App 市场采用率低的主要原因。如果能明确Cordova 适用的行业和功能,该状况就会发生改变。由此,开发人员应了解Cordova 及自身开发技能的适用范围。

本文作者简介

Anastasia Yaskevich是 ScienceSoft 公司的一名企业移动技术研究人员、ScienceSoft 是一家总部位于德克萨斯州麦金尼市的软件开发与咨询企业。Yaskevich 从研究云计算和 UI 设计开始步入 IT 行业,现在从事撰写移动技术和移动设计趋势的技术文章。

查看英文原文: Can Cordova Fit Your Target Industry?

2017 年 9 月 11 日 17:274087
用户头像

发布了 367 篇内容, 共 88.9 次阅读, 收获喜欢 164 次。

关注

评论

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

架构建模学习总结

林杭戴

极客大学架构师训练营

亚洲2020第十三届南京国际智慧新零售暨无人售货展览会

InfoQ_caf7dbb9aa8a

架构师训练营第一周作业

邓昀垚

一文详解分布式缓存(附代码)

架构师修行之路

缓存 分布式 分布式缓存

What’s New in Dubbo-go-hessian2 v1.7.0

apache/dubbo-go

golang 服务端 dubbo-go

一次年轻代GC长暂停问题的解决与思考

AI乔治

Java 架构 JVM 优化 GC调优

一代巨星的陨落!

码农田小齐

程序员 程序人生 职场

优选2020第十三届南京国际智慧停车展览会

InfoQ_caf7dbb9aa8a

Golang领域模型-依赖倒置

奔奔奔跑

golang 架构 微服务 领域驱动设计 DDD

架构师训练营第 1 期-第一周命题作业

arthur

大作业 一

Jaye

架构师培训大作业二——知识思维导图

chanson

架构师训练营大作业

路易斯李李李

快讯2020第十三届南京国际智慧工地装备展览会

InfoQ_caf7dbb9aa8a

2020南京国际工业互联网及工业通讯展览会

InfoQ_caf7dbb9aa8a

Java程序员博客系统推荐!我调研了100来个 Java 开源博客系统,发现这 5 个最好用!

云流

Java 项目管理 计算机 框架设计

Week15

一叶知秋

大作业 二

Jaye

架构师训练营1期 -- 第一周作业

曾彪彪

极客大学架构师训练营

华为HMS的“生态雪球”,滚动在万物智联的新跑道

脑极体

架构师训练营第一周学习总结

邓昀垚

极客大学架构师训练营

架构大作业

赵龙

快讯2020第十三届南京国际大数据产业博览会

InfoQ_caf7dbb9aa8a

展览工厂2020南京国际人工智能产品展览会

InfoQ_caf7dbb9aa8a

Spring 5 中文解析数据存储篇-事务同步和声明式事物管理

青年IT男

Spring5

英特尔揭示智能边缘重大机遇,助推产业智能变革

intel001

StringBuilder 比 String 快?空嘴白牙的,证据呢!

小傅哥

小傅哥 string 面试题 StringBuilder StringBuffer

架构师训练营1期第1周:架构方法 - 作业

piercebn

极客大学架构师训练营

甲方日常 17

句子

生活 随笔杂谈

架构知识总结

飞雪

架构师训练营技术知识点

devfan

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Cordova是否适用于你的目标行业?-InfoQ