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