跨平台App开发

综合自己近几个项目的开发,结合在线资料的查询,对目前流行的跨平台应用开发技术进行一个整理。

框架几乎都包含以下特性:

    使用 HTML5 + CSS + JavaScript 开发

    跨平台重用代码

    丰富的UI库

    提供访问设备原生API的 JavaScript API 包装器

    解决原生开发中机型适配的难题

    提供打包、部署的工具或服务

    都需要学习自身封装的 JavaScript API

目前较流行的框架有:Cordova,Ionic,React Native,AppCan,Dcloud,APICloud等,前三个框架我个人都有所接触,有相关的项目经验,接下来我结合个人经验和查询到的资料对各个框架的特点进行一个初步介绍。

1,Cordova

参考:Cordova中文文档

    Create your first Cordova app

PhoneGap 是 Apache Cordova 的一个分发版,

优点

  • 开源免费,社区生态成熟,插件丰富
  • 支持离线场景应用
  • 开发工具选择空间大

缺点:

  • 只提供基础访问设备的接口,需要自己搭配其他UI框架和JavaScript框架来搭配

2,Ionic

参考:Ionic Documentation

    ionic 教程

    ionic framework

    angularjs+ionic****

Ionic = Cordova + AngularJS + 一套样式库。

技术要求

  • HTML + CSS + AngularJS

优点

  • 基于 Cordova
  • 漂亮的界面,追求性能,专注原生,免费开源
  • Angular JS MVVM 开发理念,数据双向绑定
  • 继承自 Cordova,可以使用 Cordova 的插件

缺点

  • Angular JS 学习路线陡峭
  • Ionic 框架相比于原生的 Cordova 有所差异,Cordova 某些官方插件可能不适用于Ionic

3,React Native

参考:React Native 中文网

    React Navigation

    React Native

Learn once, write anywhere,做到了既具备原生应用的用户体验,又获得了Web应用的开发体验(编译迅速,发布迅速)。

缺点:

  • 初次学习成本高
  • 必须在不同平台下写两套代码,依赖暴露的接口
  • 网上资料太少,对于RN使用方法,出现问题的处理方法都相对较
  • 对于第三方库的支持,我们无法直接通过RN去实现对第三方库(百度地图,支付宝SDK。。)的支持,还是需要原生的代码去实现。

4,AppCan

参考:AppCan文档

通过AppCan IDE集成开发系统、云端打包器等,快速开发出Android、iOS、WP平台上的移动应用。

有两种方式创建项目:IDE 和云端,并且IDE可以同步到云端。

免费用户有100M空间、50个应用的限制。

优点

  • 提供一体化解决方案,方便环境搭建、开发、调试、发布
  • 框架自带UI包,包含常用控件样式
  • 框架对UI、动画渲染进行过优化,反应速度快
  • 支持本地打包、云端打包
  • 基于**的代码加密

缺点

  • 不开源,无法修改、优化底层代码
  • 分大众版和企业版,大众版免费,但功能有缺失,详细见附录
  • 暂不支持自行开发控件/,无法调取android原生功能
  • 框架自带功能过多,导致应用安装包偏大。
  • 文档偏少
  • 部分系统无法使用IDE进行调试
  • 只能在服务器端发布,无法在本地发布
  • IOS发布,需要将证书上传至服务器

5,Dcloud

参考:DCLOUD文档

特点:
云编译必须联网获取AppId

优点:

  • 国内厂商,中文文档
  • 对HTML5的性能、工具、能力都做了深入扩展,提供 IDE 、云服务等帮助节省时间
  • MUI 更贴近国内App使用习惯,提供模块的详细例子,如登录,个人中心

缺点:

  • 部分操作需要具备原生开发经验,如离线打包App
  • 新产品仍然有bug,还需改进

学习路线:


6,APICloud

参考:APICloud开发者社区

优点:

  • 不懂原生开发,不懂后台语言就可完成APP

缺点:

  • 更新速度快,版本不够稳定
  • 面向不懂App开发人群,不适合程序员和科技公司,过度依赖会降低技术水平
  • 涉嫌抄袭DCloud大量代码

7,总结

每个框架都有自己的优缺点,就我使用的框架来看,cordova,ionic插件丰富,UI开发较容易;react native依赖原生组件,体验接近原生应用,但是学习曲线较陡峭,需要自己封装大量组件;另外几个框架还未涉足,待继续学习。

接下来本博客会对使用前三个框架开发经历进行一些总结,将踩过的一些坑坑坑,做一些总结,一起交流学习,感谢关注。。。