伴随着移动互联网的兴起,越来越多的企业将部分资源投入其中,想在互联网+的大潮中分一杯羹,并期望着站在风口上,成为时代的弄潮儿。

现在不会做一个app都不好意思说是搞互联网的,那么开发一个app的方式有哪些呢?基于目前市面上比较流行的app都是基于android和ios的,所以我们只针对这两种平台谈app;虽然也有其他平台,但鉴于市场占有率,不纳入本系列的范围。

第一种方式:native app

IOS:基于XCode开发工具,使用Swift或者OC开发语言,来进行原生态的IOS应用的开发。

Android:基于Eclipse或者Android Studio开发工具,使用Java开发语言,来进行原生态的Android应用的开发。

优点:

  1. 原生态的功能和性能体验,可以完全控制所有的功能。
  2. 完善的API文档和demo。

缺点:

  1. 学习曲线较陡峭。
  2. 开发成本较大。
  3. 部署审核时间较长。

第二种方式:hybrid app,基于开源的framework,使用HTML+CSS+JS编程语言,通过编写web应用,并且转化成native app的方式来进行开发,下面列举的framework都基于开源的Cordova内核。

Sencha:使用Ext JS框架进行web开发,并通过Cordova提供的API来进行Device层面的交互。开发的应用能够在多个平台上面运行,目前的流行度比较低,原因是因为框架太大、运行速度太慢。

JQuery Mobile:使用JQuery框架进行web开发,口头禅是“write less,do more”。开发的应用能够在多个平台上面运行,开发人员比较多,主要是是基于JQuery的。

Ionic:使用AngularJS进行web开发。ionic是目前为止流行度最高的hybrid应用开发框架,ionic生态圈比较好,有一堆丰富的工具和插件。但是页面的切换及动画效果不是很理想。

Ionic 2:ionic的下一个主要版本。

OnsenUI:使用AngularJS或者JQuery进行web开发,OnsenUI是ionic的主要竞争对手,其总是比ionic领先一步,拥有更好的performance。但是使用的人不是很多。

OnsenUI 2:OnsenUI的下一各主要版本,可以基于任何的Javascript语言,并不局限于AngularJS或者JQuery。对最近比较火爆的ReactJS有非常好的支持。

优点:

  1. Write once,run anywhere!
  2. 学习曲线比较平滑,web思维,开发简单。
  3. 开源,有大量的社区支持以及丰富的案例。
  4. 可以在线部署,免去部署审核时间。
  5. 开发成本较小。

缺点:

  1. Web不能解决一切问题。
  2. 不适合高质量交互及动画类应用,性能相比native app有一定的差距。

第三种方式:基于跨平台的开发工具,来进行原生态应用的开发。

Xamarin:基于VS开发工具,使用C#开发语言,进行native app的开发。随着微软产品的开源,相信Xamarin会有越来越多的人使用。需要针对不同的平台进行不同的编码。

Titanium:使用Javascript语言,通过提供跨平台的Javascript运行时和mobile api来进行native app的开发。需要针对不同的平台进行不同的编码。

React Native:使用Javascript语言,通过JavascriptCore与Native API进行通信来进行native app的开发,由Facebook开源。

优点:

  1. Lean once,write anywhere!
  2. 拥有native app的性能。
  3. 拥有web开发的效率。

缺点:

  1. 入门门槛比较高。
  2. 需要自己为不同的平台定制UI组件。

结论:

每种方式各有其优缺点,我们应该根据实际的应用场景、团队成员的技术储备来选择合适的技术。

第一章:hybrid app开发之技术选型的更多相关文章

  1. [目录]hybrid app 开发实战(基于ionic,cordova,angularjs)

    序:为什么要写这个系列 第一章:hybrid app开发之技术选型 第二章:ionic,cordova,phonegap关系浅析 第三章:ionic环境搭建之windows篇 第四章:ionic环境搭 ...

  2. 【Hybrid App】Hybrid App开发实战

    [引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员, 技术成熟度,时间,项目需求等一堆的因素.因此,开发App的方案已经变得越来越 ...

  3. Hybrid App 开发模式

    开发移动App主要有三种模式:Native. Hybrid 和 Web App. 需要注意的一点是在选择开发模式的时候,要根据你的项目类型(图片类?视频类?新闻类?等),产品业务和人员技术储备等做权衡 ...

  4. Hybrid App开发实战

    Hybrid App开发实战 作者 李秉骏 发布于 九月 04, 2013 | [引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员 ...

  5. 第一章 搭建Qt开发环境

    第一章 搭建Qt开发环境 1.到http://download.qt-project.org/archive/上下载Qt的源码包.我下载的是qt-everywhere-opensource-src-4 ...

  6. 【Hybrid App】Hybrid App开发 四大主流移平台分析

    转自http://dev.yesky.com/238/34657738.shtml Hybrid App在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之 ...

  7. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  8. Hybrid App 开发初探:使用 WebView 装载页面

    Hybrid App 是混合模式应用的简称,兼具 Native App 和 Web App 两种模式应用的优势,开发成本低,拥有 Web 技术跨平台特性.目前大家所知道的基于中间件的移动开发框架都是采 ...

  9. hybrid app开发中用到的html5新特性localStorage、sessionStorage和websql database

    近期在项目中进行hybrid app开发,项目中有大量的js代码执行在android设备上. 使用到了非常多HTML5的新特性,之前没有遇到过,不了解.这里记录下添加点前端的知识.混合式app开发中. ...

随机推荐

  1. python2.7响应数据中unicode转中文

    print ("响应结果:%s" % r.content.decode('unicode_escape')) 一. 在爬虫抓取网页信息时常需要将类似"\u4eba\u75 ...

  2. 【Java学习01】:win7环境安装JDK

    最近开始学习java,从第一步做起吧.win7中安装jdk非常简单,大牛勿喷. 1.下载JDK并执行安装. 访问网站www.java.com,选择win7版本的JDK下载.下载后双击安装(比较慢,耐心 ...

  3. Digester学习笔记(一)转载

    本博文系转载,作者原文已经无法找到,感谢原作者的辛苦整理 Digester学习笔记(一) 在windows下开发程序,用M$提供的接口处理.ini文件或管理注册表的键值是非常方便的.在java平台上开 ...

  4. Max Sum(动态规划)

    原创 http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目要求求出一个序列里面的最大序列和,序列要求是连续的,给出最大序列和,序列首元素下标和尾元素下标, ...

  5. ApplicationContex是干啥的

    ApplicationContext就是一个百宝箱 ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,Applic ...

  6. Hackfive 使用TextSwitcher和ImageSwitcher实现平滑过渡

    1. 应用场景: 通过向左和向右的导航按钮浏览日期列表 在日期选择空间中改变日期 倒计时始终 新闻刚要 2.用到的知识点是:     TextSwitcher和ImageSwitcher     Te ...

  7. C#Task学习

    简介: Task 对象是一种的中心思想基于任务的异步模式首次引入.NET Framework 4 中. 因为由执行工作Task对象通常以异步方式执行线程池线程上而不是以同步方式在主应用程序线程中,可以 ...

  8. 指针和动态分配内存 (不定长度数组)------新标准c++程序设计

    背景: 数组的长度是定义好的,在整个程序中固定不变.c++不允许定义元素个数不确定的数组.例如: int n; int a[n]; //这种定义是不允许的 但是在实际编程中,往往会出现要处理的数据数量 ...

  9. django中ModelForm解决多表单组合显示问题

    一.多表单组合显示问题 在项目中用ModelForm生成页面时 当有多表单组合显示时,会显示全部的关联表单数据. 而在实际项目中可能会出现只想让用户选择部分数据,这时候这样的显示就有问题. 二.问题解 ...

  10. Java面向对象之关键字super 入门实例

    一.基础概念 (一)super关键字 super关键字的用法和this相似.this代表的是当前对象.super代表的是父类中内存空间. 子父类中是不会出现同名属性的情况. (二)继承中.成员变量问题 ...