移动app开发有哪些框架

动态 未结 置顶 精帖
用户
悬赏:60飞吻

移动APP开发框架盘点

总体概述

现在比较流行的移动APP开发框架有以下六种:网页、混合、不仅、原生、桥接、自绘。前三种体验与Web的体验相似,后三种与原生APP的体验相似。这六种框架形式,都有自己适用的范围。无所谓好坏,适用就是好。

l 网页应用适用于传统网站APP化,比如淘宝、京东,有大量WEB页面嵌入到APP中。

l 混合应用适用于小成本应用开发,全部代码都基于Web,好处是开发快速、成本低。

l 渐进应用适用于高机会成本的场合,边下载边使用,能快速获取,快速体验。

l 原生应用适用于大型和高体验要求的应用,能做出让人满意的体验效果。

l 桥接应用适用于高速迭代的创意类应用,让体验与成本都处于可接受的范围。

l 自绘应用适用于游戏和有特殊效果的应用,最大的好处是没有平台约束和表达瓶颈。

一、网页WebApp

WebApp与传统Web的主要区别,在于前端框架,特别是V-DOM框架的应用。此类前端框架使得WebApp与NativeApp在机理上已经没有任何区别了。在众多的前端框架中, React、Vue和Anular是最有竞争力的选择。

React

V-Dom技术的开创者,主流框架中的NO.1。React的贡献都是开创性的,在它基础上,也有很多兼容框架,比如Anu,Nerv。用以解决React在性能或IE兼容性上的问题。

主流技术方案:

React + Redux + ReactRouter + Material-UI/AntD/Semantic-UI

Vue

由国人创建,在中国拥有大量使用者,也有很多配套的开源项目。它的主要特点是学习成本低,容易上手。

主流技术方案:

Vue + Vuex + Vue-Router + Vuetify/Quasar/vux/ Mint-UI

Anular

大而全型的框架,为大型项目所推崇,深度整合Typescript和Rxjs。

主流技术方案:

Anular + Typescript

二、原生NativeApp

由于操作系统的限制,原生应用只有那么几种。对于原生应用,架构是基础,框架是核心,加上海量的UI组件。

IOS

iOS开发已经从OC全面转向Swift,最新的架构VIPER基本上可以视为MMVPP。

主流技术方案:

VIPER + RxSwift + Moya + Alamofire + SwiftyJSON/ObjectMapper

Android

Android开发语言从Java更换为Kotlin。编译时依赖注入框架Daer也成为不二法宝。

主流技术方案:

MVP + Daer + RxKotlin + Retrofit + OkHttp + Kotson(Gson)

三、混合HybridApp

HybridApp的关键不在本身,而在WebApp。好的WebApp改为HybridApp很容易。所以混合应用框架实际是指WebApp的基础设施库,有Cordova(PhoneGap)就足够了。

Cordova

PhoneGap开源而来。

四、桥接BrideApp

桥接应用的特点在于使用原生界面,但应用逻辑使用脚本语言编写,通用桥接来控制原生界面。这样达到使用脚本编写原生应用的目的,甚至可以网页与原生应用使用同一套代码,节省大量开发成本。但是操作手感比网页应用强不少。

ReactNative与Weex代表了两种不同的思路。ReactNative提供工具,将平台差异化开放出来(Learn Once, Write Anywhere);而Weex提供框架,将平台差异化屏蔽(Write Once, Run Everywhere)。所以ReactNative最大的痛点是使用难度大,必须熟悉所有平台;Weex则注定功能相对弱小,并且坑比较多。

  • React Native

React的大热,实际始于ReactNative的发布。

  • Weex

小众的框架,能不能壮大,关键在于学习者是否能有效率地编写应用。所以很多人认为文档是决定一个开源框架生死的关键。其实有几个使用框架的开源应用,比文档还要关键。因为这些应用活着,间接地证明了框架还有生存的价值和能力,也能成为更好的文档教材。Weex号称有一堆知名的应用,但开源项目就乏善可陈了。

  • Xamarin(C#)

Xamarin在IOS与Android中的实现方式不一致,在IOS中是AOT直接编译,在Android中是使用桥接技术。

  • RubyMotion(Ruby)

动态语言编写移动应用,对语言社区而言是能力问题,必须要证明语言的优越性和无所不能。但除开狂热爱好者,正确的做法是使用最有效率的平台和语言。Ruby的长处在于Web后端,所以编写APP并无多少继承性,编写效率也由于太过小众而存在掉坑的风险。有免费版本,但只支持最新的操作系统版本。

  • Titanium

这个框架的核心就是使用JavaScript开发应用,与Web开发的在形式上区别很大。所以从根本上,这就是一种脚本语言框架,和RubyMotion如出一辙。

五、自绘OwndrawApp

自绘一直以来都是游戏界面的势力范围,事实上除开Flutter,其它的框架都是偏游戏开发的。所以Flutter的横空出世,吸引了很大的关注,毕竟这是真正跨平台的唯一可行方案。

  • Flutter(Dart)

除了使用Dart语言有些争议外,Flutter是真正值得关注的跨平台方案,没有之一。最近它的目标平台除开iOS 和 Android,Flutter Desktop Embeddin项目将Flutter引入到桌面操作系统,Humminbird项目将 Flutter 应用引入浏览器。它利用 Dart 平台的特性不仅可以编译原生 ARM 代码,还可以编译JavaScript 。这使得 Flutter 代码可以在基于标准的 Web 上运行而无需任何更改。

  • CrossApp(C++)

CrossApp是基于Cocos2d-x引擎的,而Cocos2d-x是基于OpenGL的 。9秒社团是由手游社区发展而来的,由此可见CrossApp的背景,使用C++开发也有一些忠实拥趸。

  • Corona(Lua)

更适合做游戏,不适合做应用程序,主要是因为界面部分,官方提供的UI部分代码非常不好用,自己实现又很耗时耗力。

  • Kivy(Python)

又一个动态语言开发框架,和游戏引擎结合起来使得它在特定领域还是很有市场的。而且它还跨windows平台,可以在windows下直接运行,可以真正实现跨平台运行。

六、渐进ProressiveApp

不仅有边下载边使用这一层意思,也有下载完成后不依赖网络这一层意思。从类型上来讲,有Goole主导的PWA(ProressiveWebApp),还有微信主导的小程序。相比PWA一统天下的野心,小程序明显是实用主义导向,能用就好,没有长远的布局。急于与微信竞争的百度、支付宝、中国九大手机厂商联盟的QuickApp也复制了这种风格。

回帖
  • 消灭零回复
[打开调试信息]