跨平台的应用开发工具和前端开发工具

http://www.itjxue.com  2015-08-07 20:56  来源:未知  点击次数: 

愉悦的周五,早些回到家,冲澡吃饭照顾猫咪家务完毕已然超过九点的样子。登录博客后台,进入编辑页面,才觉得些许轻松安逸。不坏,一天里能有这么一会沉浸在这样的感觉里,足够了。

在之前的一篇文章中,我们曾经讨论过,对于交互和视觉设计相关职能的从业人员来说,从传统Web行业向移动应用领域转型的过程中需要学习和注意的问题。这篇文章中提到过“混合型应用”的概念,以及与之相关的两本开发指导书籍。今天这篇文章的英文原文,就是来自这两本书的作者——移动应用开发者Jonathan Stark。

本文中,他将站在传统Web前端开发人员的角度,为我们介绍一些在实际项目案例中总结出来的移动应用开发方法策略,以及几类具有代表性的用于打造跨平台移动应用的前端开发工具。

各位前端开发相关职能的同行们,扩展视野、提升技能、随“机”应变的时机已然成熟;衷心希望本文可以成为推动大家事业进步发展的一个催化点。不多说了,我们来看正文。

无论站在怎样的角度去衡量,移动互联网及客户端应用的发展势头都是非常迅猛的。日均使用量、智能手机的普及率、来自移动设备的订阅量、搜索引擎流量、广告呈现、应用售卖……所有这些都处于迅速上升的状态。可以预计,在不久的将来,移动设备将拥有足够的成熟度与普及率,并跻身于传统桌面电脑、笔记本等硬件平台的行列,成为我们日常生活的主要设备。

巨大的移动市场为传统Web设计开发人员带来了新的机遇与挑战。各类移动设备在爆发式增长的同时,也带来了前所未有的分裂与混乱的状况。如果需要同时为多平台设备进行客户端应用的开发、测试和维护,势必会消耗大量的资源与成本。

本文中,我们首先会对几种移动化解决方案进行比较和分析,然后将重点放在一些常见的用于跨平台移动应用开发的前端框架工具上;不过我不会在最后选出一个所谓的最优方案——开发方式的选择最终会取决于你的项目本身,包括业务模式、需求、目标市场、开发资源等多方面因素。本文的主要目标是提供一些有用的信息,帮助各位读者在实际项目中选择最合适的方法与工具。

Web应用(Web App)与原生客户端应用(Native App)

关于这两种移动化方案孰优孰劣的辩论已然有不少了。

我相信,如果你能以Web应用的方式打造移动化产品,那么你确实应该这样做;反之则不应该。..另外一种情况则介于两者之间,即通过HTML、CSS、Javascript等前端技术,结合移动设备原生开发方式,打造所谓的混合型应用。

看似废话,但重点在于“能”或“不能”。这里我们主要指具体的项目需求,而非技术开发能力。我所在的团队,做过的多数案例,都来自于企业级的客户。大公司,顾名思义,在人员、产品及服务等方面都具有相当的规模,他们所需要的移动化解决方案在跨平台方面的需求都很高。

当接手一个新的企业级移动化项目时,我会将Web App作为默认的首选方式,同时结合以下三个问题进行进一步评估:

功能方面,是否涉及那些只有本地应用才能利用的设备硬件资源?

比如,一款有条形码扫描功能的应用,必须配合设备的摄像头进行工作,而摄像头是浏览器无法获取的硬件资源,所以这款应用不能以Web App的形式存在;类似的功能还包括影像音频的录制传输、后台运行、消息推送等。如果该产品确实必须基于这些功能才能被正常使用,那么原生客户端应用便是不二之选。

该产品的用户是谁?

如果产品拥有大规模的公众用户群,那么原生或Web应用的方式都是可选的,前者可以通过平台官方的App Store或应用市场进行推广,后者的跨平台性更好。如果产品属于公司或组织内部使用的管理信息系统等类型,那么Ad hoc、类似Apperian这样的第三方App Store或Web App都是可选的。

该应用在系统资源消耗等方面的敏感度如何?

很多方面的因素会使移动设备浏览器占用过多的内存资源,从而影响Web App的执行效率及用户体验。这些因素包括半透明视觉效果及动画效果、大量的内容数据、文件加密和解码、基于地图的复杂交互方式等。

回答了这三个问题之后,对解决方案的选择便容易多了。举例说,比如我收到的需求是为企业员工设计开发一款B2E应用,用来管理他们的个人信息及收益情况,并且不需要使用移动设备提供的高级硬件功能,那么Web App的方式是最恰当的选择。另外一方面,如果需求是开发一款面向大众的虚拟地图应用,并需要配合手机的陀螺仪功能才可以工作,那么我们必须选择本地客户端的方式进行开发。

不过,正如我们之前提到的,在这两者之间,还有另外一种混血方案可以去考虑,也就是混合型客户端应用。

原生客户端应用(Native App)与混合型客户端应用(Hybrid App)

所谓混合型应用,就是在原生客户端中嵌入基于前端技术构建的页面视图;这种方式其实已经很常见了。本质上讲,页面视图就是HTML页面,但它不需要另外调用移动设备中的浏览器进行查看和操作。

混合型应用的典型实例其实是我们非常熟悉的:iPhone、iPad等iOS设备的本地App Store或iTunes,以及Twitter和Facebook的客户端等。

在混合型应用中,原生的部分其实只相当于一个架子或容器,应用的核心是基于HTML、CSS、JavaScrit或前端框架打造的页面视图。页面的静态文件资源可以存储在服务器端,动态数据通过Ajax的方式在页面视图与移动应用中传输。

所以,虽然从技术上讲,混合型应用是设备本地化的,但它们显然拥有两种不同的运作方式。下面是两个很常见的问题,在需求评估时经常会遇到。

Q:如果我有技术及资源去开发一套纯粹的原生客户端应用,那么有什么必要使用HTML等Web前端开发方式去打造混合型应用呢?

A:混合性应用的解决方案最主要的目的是解决跨平台的问题;对于每个平台,只需开发和维护“容器”性质的本地应用部分,而实际的内容功能则可以统一由一套页面视图来担当。

Q:那么干脆只做一套Web App好了,为什么还要使用原生客户端作为容器呢?

A:这个问题的答案包括两方面:

商业需求:对于很多客户案例来说,将应用通过App Store或Market推广出去,是一种商业方面的需求。比如,客户也许会希望自己的产品是付费应用,或者开发前的用户研究表明他们的用户多数是通过App Store安装本地客户端的。

硬件功能需求:混合型应用的一个优势在于,虽然本地化的框架只是作为页面视图的容器,但它毕竟是本地化的,在需要的时候,仍可提供访问硬件设备及相关功能的权限;这是单一的Web App所无法做到的。技术方面,可以通过JavaScript经由本地应用框架,与硬件功能进行通讯,例如控制摄像头等。

我确信,通过这种需求梳理,多数人会倾向于混合型应用的方式。其实这也正是本文接下来的主线——我们一起来看看有哪些前端开发工具是可以帮助我们进行混合型应用的开发的。我将它们分为四大类,接下来会分别进行介绍,并对它们的适用情况进行简单的对比。

(责任编辑:IT教学网)

更多