英文原文地址:http://phonegap.com/blog/2015/03/12/mobile-choices-post1/
移动App开发策略选择
这篇文章是,选择移动App开发策略时面对不同选择如何综合考虑之系列文章的第一篇。通过各方面的比较,让开发者明白什么时候什么地方在自己的app里面使用Adobe PhoneGap。
当我们搭建一个native,mobile web或者hybrid移动app时,最常考虑的选择如下。
1、Native Mobile App
- 运行在特定的设备和系统上面
- 跑在本地的app
- 多种语言编写,Objective-C/Swift (iOS) Java (Android) or C# (Windows)
- 需要安装到设备上
- 必须通过app分发市场审核
- 不依赖容器(webview or the like)
- 离线依然可以使用
Native App Example
2、Mobile Web App
- 跑在任何设备的移动浏览器
- 很少调用设备API(Camera)
- 使用统一的web技术标准编写-HTML5/javaScript/CSS
- 不需要通过某个app store的提交、审核、发布流程
- 自适应多种屏幕尺寸
- 由一个web服务器支撑
- 离线状态无法使用
Mobile Web App Example
3、Hybrid Mobile App
当说到hybrid的时候,一个很重要的概念要进一步澄清,将hybrid mobile apps分成Web Hybrid和Native Hybrid两种更有意义,也是本篇文章的依照的定义。
Web hybrid mobile apps
Web hybrid mobile apps主要被包裹在一个webview里面,和一个简单的native容器用来桥接native的API。UI控件也不需要native提供,它只是对native和webview交互的一个简单封装。
Native hybrid mobile apps
Native hybrid mobile apps混合了native控件和一个或多个webview。常见的方案是,native创建navigation和tabbar,主要内容放在各个被包裹的webview里。
Hybrid App Characteristics
- 作为一个需要本地安装的app跑在设备上
- 使用统一的web技术标准编写-HTML5/javaScript/CSS
- 跑在一个webview上(嵌入的web浏览器)
- 多数情况下,多种平台只需要一套base代码
- 可以调用native API(摄像头,联系人,加速计,CPS等)
- 需要通过app分发市场的提交,审核,发布流程(iOS App Store,Google Play)
- 需要运行在特定的设备
- 自适应多尺寸屏幕
- 离线状态可以使用
PhoneGap可以用来创建上面两种类型的hybrid app,并且提供了很强的灵活性去结合native元素来裁剪用户体验,在拥有web的好处的同时尽力获得一个更native的视觉效果和体验。已经非常清楚了,为什么越来越多的公司选择混合native和web,就是为了以混合的方式同时获得他们两者的好处。
Hybrid Sweet Spot
很多开发者选择native创建navigation和tabbar,将主要的内容放在各个被包裹的webview里,以在保证大范围的用户能够快速使用它们的app的同时,节省大量的时间和成本。此方式也提供了避开App Store审批的麻烦以快速更新的能力。以这种模式,每个平台只需要一小部分的native基础代码需要维护,而且这小部分代码代表的是app里的固定部分,而不是主要内容,从而更容易管理。
一个很受欢迎的项目管理app,Basecamp的创始人,也采用混合开发的方案。他们写过很多质量很高的文章来讲解他们的移动app的架构,以及它是如何不断演进出最好的native和hybrid的混合方案。
- Hybrid: 小团队开发如何更轻松的让Basecamp适配多平台
- Hybrid sweet spot: Native navigation,web content
- Drawing the native/web line in Basecamp for iPhone
Basecamp的多设备运行
JavaScript SDK Frameworks
另一种移动app,同样用JavaScript来渲染视图,并用native来实现平台适配,也应该被当作hybrid讨论。一些框架罗列如下:
- React Native from Facebook
- NativeScript from Telerik
- Titanium from Appcelerator
React Native一直是闭源的,而NativeScript刚刚发布开源后的beta版本,所以均无法提供更多的信息去完全的理解如何在app中使用他们的框架。
Stay tuned
现在你应该已经有办法去做出有效的选择了,系列文章的下一篇将特别聚焦在PhoneGap在native中嵌入webview的混合开发中如何使用。很快更新,及时查看。