热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

几款移动跨平台App开发框架比较[通俗易懂]

几款移动跨平台App开发框架比较[通俗易懂]整理目前流行的跨平台WebApp开发技术的特点,仅供参考。每个框架几乎都包含以下特性:使用HTML5+CSS+JavaScript开发;

海豚精灵:https://www.whhtjl.com;优课GO:https://mgo.whhtjl.com

整理目前流行的跨平台WebApp开发技术的特点,仅供参考。

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


  1. 使用 HTML5 + CSS + Javascript 开发;

  2. 跨平台重用代码;

  3. 丰富的UI库;

  4. 提供访问设备原生API的 Javascript API 包装器;

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

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

  7. 都需要学习自身封装的 Javascript API;

筛选框架的要求:


  1. 性能:运行速度快;

  2. UI:提供接近原生的UI体验;

  3. 插件多,文档丰富,开发效率高,容易扩展和维护;

  4. 满足业务需求;

 

PhoneGap

优点:


  1. PhoneGap是一个开源的框架;

  2. PhoneGap 是一个基于HTML和Javascript的应用开发平台,使用它可以构建本地应用;

  3. 支持8个移动应用开发平台(Android,iOS,Windows,BlackBerry,Symbian,Bada,WebOS和Tizen);

  4. 可以利用传统的web开发技术(如HTML、CSS、 Javascript )开发用户接口,利用PhoneGap容器把它们部署到不同的应用环境和设备上;

  5. 此外,它允许您访问本机API,以便APP可以充分利用设备提供的各种功能;

  6. 完全做到了written once,run everywhere;代码编写完之后,通过phonegap的build工具构建;

  7. 采用w3c标准,包括但不限于HTML5、CSS3、Javascript,比如说W3C标准中的命名方式等;

  8. 不需要手机编程基础,只要会HTML就能做应用,且能通过js调用设备底层硬件【比如加速计、摄像头、罗盘、通讯录、文档、GPS、媒体、网络、通知(警告、声音和振动)、存储、传感器。。。】;

 

Ionic

技术要求

HTML + CSS + AngularJS

优点:


  1. 基于 Cordova;

  2. 漂亮的界面,追求性能,专注原生,免费开源;

  3. Angular JS MVVM 开发理念,数据双向绑定;

  4. 继承自 Cordova,可以使用 Cordova 的插件;

  5. Ionic可以在网络运行的任何地方运行 – iOS,Android,浏览器,电子,PWA等;

  6. 浏览器支持;

几款移动跨平台App开发框架比较[通俗易懂]

缺点:


  1. Angular JS 学习路线陡峭;

  2. Ionic 框架相比于原生的 Cordova 有所差异,Cordova 某些官方插件可能不适用于Ionic;

 

React Native

优点:


  1. 能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP;

  2. 仅需学习一次,编写任何平台。(Learn once, write anywhere);

  3. 然不能做到一次编码到处运行,但是基本上即使是两套代码, 也是相同的jsx语法, 使用js进行开发。用户体验高于html, 开发效率较高;

  4. Flexbox布局据说比native的自适应布局更加简单高效;

  5. 可实现在线更新,允许运行于JavaSriptCore的动态加载代码,更贴近于原生开发;

  6. 使 App 可以达到每秒 60 帧(足够流畅),并且能有类似原生 App 的外观和手感;

  7. 如果你只想给现有的原生应用中添加一两个视图或是业务流程,React Native 也同样不在话下;

缺点:


  1. 对开发人员要求较高,不是懂点web技术就行的,当官方封装的控件、API无法满足需求时就必然需要懂一些native的东西去扩展,扩展性仍然远远不如web,也远远不如直接写Native Code;

  2. 官方说的很隐晦:learn once,write anywhere。人家可run anwhere。就是针对不同的平台需要些多套代码;

 

Cordova

优点:


  1. 开源免费,社区生态成熟,插件丰富;

  2. 支持离线场景应用;

  3. 开发工具选择空间大;

  4. iOS和Android基本上可以共用代码,纯web思维,开发速度快, 简单方便,一次编码,到处运行。如果熟悉web开发,文档很全, 系统级支持封装较好,所有UI组件都是有html模拟,可以统一使用;

  5. 可实现在线更新,允许动态加载web js;

  6. 文档多,开发者多,遇到问题容易解决,技术成熟;

缺点:


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

  2. 占用内存高一些,不适合做游戏类型app, web技术午无法解决一切问题,对于比较耗能的地方无法利用native的思维实现优势互补,如高体验的交互,动画等;

 

Xamarin

你是C#还是.NET开发人员?恭喜!Xamarin马上就会有宾至如归的感觉。即使你不是这样的开发人员,你也需要相当少的时间来学习Xamarin,因为它相对容易。此外,它欢迎Android和iOS之间的差异,即没有任何共同性。许多其他框架都是这样做的,它会使UI不一致。

 

AppCan

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

有两种方式创建项目:IDE 和云端,并且IDE可以同步到云端;
免费用户有100M空间、50个应用的限制;

优点


  1. 提供一体化解决方案,方便环境搭建、开发、调试、发布;

  2. 框架自带UI包,包含常用控件样式;

  3. 框架对UI、动画渲染进行过优化,反应速度快;

  4. 支持本地打包、云端打包;

  5. 基于密钥的代码加密;

缺点


  1. 不开源,无法修改、优化底层代码;

  2. 分大众版和企业版,大众版免费,但功能有缺失,详细见附录;

  3. 暂不支持自行开发控件/,无法调取android原生功能;

  4. 框架自带功能过多,导致应用安装包偏大;

  5. 文档偏少;

  6. 部分系统无法使用IDE进行调试;

  7. 只能在服务器端发布,无法在本地发布;

  8. IOS发布,需要将证书上传至服务器;

 

Dcloud

几款移动跨平台App开发框架比较[通俗易懂]

几款移动跨平台App开发框架比较[通俗易懂]

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

优点:


  1. 国内厂商,中文文档;

  2. 对HTML5的性能、工具、能力都做了深入扩展,提供 IDE 、云服务等帮助节省时间;

  3. MUI 更贴近国内App使用习惯,提供模块的详细例子,如登录,个人中心;

  4. 平台支持度:

几款移动跨平台App开发框架比较[通俗易懂]

缺点:


  1. 部分操作需要具备原生开发经验,如离线打包App;

  2. 新产品仍然有bug,还需改进;

学习路线:

几款移动跨平台App开发框架比较[通俗易懂]

 

uni-app


  1. 跨平台更多;(一套代码,多端发行;优雅的在一个项目里调用不同平台的特色功能!)

  2. 运行体验更好;(组件,api与微信小程序一致;兼容weex原生渲染)

  3. 通用技术栈,学习成本更低;(vue的语法,微信小程序的api内嵌mpvue)

  4. 开放生态,组件更丰富;

   -支持通过npm安装第三方包;

   -支持微信小程序自定义组件及SDK

   -兼容mpvue组件及项目

   -App端支持和原生混合编码

   -DCloud拥有插件市场

几款移动跨平台App开发框架比较[通俗易懂]

条件编译优化

 

APICloud

优点:


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

  2. 源码自有,灵活可配置的微信公众号解决方案;

  3. 保利威视平台接入;支付宝支付平台接入;百度开放平台接入;QQ开放平台接入;新浪微博平台接入;微信开放平台接入;

缺点:


  1. 更新速度快,版本不够稳定;

  2. 面向不懂App开发人群,不适合程序员和科技公司,过度依赖会降低技术水平;

  3. 涉嫌抄袭DCloud大量代码;

 

Flutter

优点:


  1. 高生产效率。一套代码可以开发出Android和iOS应用;Dart语言优越性,使得同样的 功能只需要很少的代码;迭代更加方便, hot reload功能;

  2. 创建优雅的、高度可定制的用户界面。Flutter内置了对Material Design和Cupertino(iOS-favor)的UI组件库;提供了可定制 的UI组件,不再受制于OEM控件的限制;

  3. 借助可移植的GPU加速的渲染引擎以及高性能本地ARM代码运行 时以达到跨平台的高质量用户体验。

缺点:


  1. Flutter采用Dart语言开发,属于小众语言,需要一切都要重新学习。

  2. Flutter现在还处在Beta阶段,第三方库很少。

 

Wex5

优点:


  1. 开源模式;

  2. 跨平台多前端应用开发,支持app、web和微信应用快速开发;

  3. 高效精致的UI组件体系,完全基于主流标准和技术;

  4. 本机API框架(Native APIFramework);

  5. 可视化拖拽式集成开发环境IDE;

  6. 全能力的调试支持和智能代码提示;

  7. 无限制、多方式、可加密的App应用打包发布;

  8. 彻底开放的App应用后端技术和部署方式;

缺点:


  1. 使用xid替换标准的id,但是导致代码的很难复用。例如,用Wex5开发,或者在Wex5体系中使用外部组件,都很难复用;

  2. Model:容易混淆,传统意义上的model只是提供数据模型操作,但是wex5的model有点乱用,中间不但夹杂有业务逻辑,还混合了视图操作;

  3. DOM节点的操作,不能按照标准的方式,必须使用wex5自己封装的方法,不当增加的开发成本、学习成本,代码难以复用;

 

生态社区特点对比如下:








































平台

dcloud

起步科技

AppCan

项目

dcloud.io的uni-app

wex5

AppCan

兼容

免费,超多端发布(包括各类小程序,H5,App)

全免费,多端发布(H5,app)

个人免费,多端发布,有限制

打包构建

混合开发,使用web-view进行H5页面加载,可以分为本地页面,也可以使用网络页面(有加载条)

混合开发,H5套壳的形式开发,内容升级可以直接修改H5页面

混合开发,可以很容易实现H5套壳的形式

主要开发和知识点

Vue.js开发

Html+js+css开发

Html+js+css开发

其他

UI组件丰富,文档十分详细,通过编译,很接近原生,性能良好,社区活跃

UI组件较弱,文档详细

UI组件较弱,文档详细

 

技术架构特点对比如下:
































架构特点

uni-app

wex5

AppCan

APICloud

底层

基于vue.js,通过自研编译器编译

基于cordova开发,cordova开源,暂时没有看到可以直接继承原生SDK

自身封装底层,闭源,无法直接使用原生SDK

闭源,免费版有限制

扩展能力

支持原生SDK的云打包技术,有插件市场,也可以自己开发插件

可基于cordova开发原生扩展,插件市场

提供了一种叫Widget插件扩展机制,扩展原生插件用于持续继承

可以自己开发模块

编译

支持本地编译与云端编译

支持本地编译

云端编译,有次数限制

云端编译,有次数限制

 

总结

经过一番对比,感觉 Cordova , DCloud和Uni-app 更适合本次项目。

 

原因:

Cordova

生态成熟,有更多可搭配工具使用,开源代码可自由定制;

前端框架: famous 或 Framework7;

 

DCloud

国产中的开源,免费,性能不错;

提供云服务帮助打包和部署、测试,降低一部分门槛,减少时间;

拥有插件市场,也可以自己开发插件;

前端框架:MUI

 

Uni-app

生态完整,并且社区发展良好,使用了流行的vue.js开发,编译打包的APP体验十分流畅,使用uni-app开发H5效率十分可观,值得尝试(vue.js的生态越来越强大了)。同时,如果不是有特殊的需求,uni-app基本可以完成原生APP90%的任务的;

 

其他框架不适合的原因:

APICloud

闭源,免费版有限制,生态不好,名声不好,面向群体不适合;

 

AppCan

闭源,商业化产品,免费版限制太多;

 

Ionic

AngularJS 学习曲线陡峭,需要时间;

 

React Native

学习成本高;

 

Flutter

属于小众语言,一切都要重新学习。

 

总的来说,以上整理分析的框架的优劣都是相互的,根据产品需求和企业技术方向以及技术人员的具体情况,选择最合适的就是最好的。

几款移动跨平台App开发框架比较[通俗易懂]

 


推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
author-avatar
don't
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有