# 主流跨平台框架对比

目前主流跨平台框架简介

可用平台开发技术使用语言Star主体
HippyiOS, Android,WebVue,React,Java,Object-C4.1kTencent
uni-appiOS、Android、移动端H5,各种小程序混合17.6kDCloud
Framework7iOS、Android混合Vue,React15.1kiDangero.us
FlutteriOS, Android,Web,Desktop原生Dart85.1kGoogle
ElectronDesktop原生JavaScript,HTML, CSS80.1kLinux基金会
React NativeiOS, Android原生React84.2kFacebook
WeexiOS, Android,Web原生Vue,Rax17.6kAlibaba
chameleon(变色龙)iOS、Android、移动端H5,各种小程序原生CML-类VUE语法7.1k滴滴出行
TaroiOS、Android、移动端H5,各种小程序混合React23.7k京东
mpvue微信小程序vue49美团
WePY微信小程序类似Vue19.6kTencent
ioniciOS 、 Android、Web, Electron、PWA40kionic-team
Cube UIH5Vue7.7k滴滴出行
mint-ui移动端ElementVue15.4k饿了么


未完待续...


PC电脑上访问的就叫web页面,手机上(包括浏览器,微信)访问的就叫H5页面。


按照开发技术,App 可以分成三大类:

  • 原生应用(native application,简称 native App)
  • Web 应用(web application,简称 Web App)
  • 混合应用(hybrid application,简称 hybrid App)


Flutter 与 React Native/Weex 本质上是不同的,它并没有使用 WebView、JavaScript 解释器或者系统平台自带的原生控件,而是有自己专属的一套 Widget,界面开发使用 Dart 语言,而底层渲染使用自身的高性能 C/C++ 引擎自绘。


先说一下全名,progressive web app: 渐进式网页应用。这是谷歌推出的,我是这样理解的:


  • 不能从手机的首屏直接进入。
  • 缺乏手机状态栏和锁屏时的通知推送能力。
  • 不支持脱机访问(即断网也能使用)。


为了解决这些问题,Chrome 团队开发了新技术"渐进式 Web App"(Progressive Web App,缩写 PWA)。它可以把网站缓存在手机里面,供离线时使用,还能在手机首屏生成图标,直接点击进入,并且有通知推送能力,也不带有浏览器的地址栏和状态栏,跟原生 App 的使用体验非常接近。


但是,PWA 需要浏览器访问一次网站,才能在首屏生成图标,并且目前 iOS 系统的支持还不够理想,所以还只是一项探索性质的技术,迄今为止缺乏足够的成功案例。


在移动客户端领域,主流的跨平台开发框架大体经历了三个阶段。


第一阶段,主要通过 WebView 绘制界面,并通过 JavaScript Bridge 将系统的一部分能力暴露给 JS 调用。PhoneGap、Cordova 混合开发都可以归属于这一类。


第二阶段,大家发现用 WebView 承载界面有性能等各种问题。于是将绘制交回给原生,通过 JS 来调用原生控件,编写业务代码。Weex、RN 就是其中的佼佼者,这也是现在绝大部分跨平台框架的思路。


第三阶段,虽然使用原生控件承载 UI 解决不少渲染的问题。但是处理平台差异性仍然需要耗费极大精力,效果也不尽如人意。这个时候,Flutter 提出的解决方案,就是连绘制引擎也自研,尽可能减少不同平台之间的差异性, 同时保持和原生开发一样的高性能。因此目前业界对 Flutter 的关注度也是最高的。


参考链接


http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html


https://github.com/niezhiyang/open_source_team