# Flutter简介

# 废话篇

​ Flutter是google开源的新跨平台UI框架,目标将支持pc,mobile,web前端的UI开发。

​ pc和mobile端底层的UI引擎是skia,web前端依然是H5+js(不知道什么时候才有机会支持webassembly)。

# 跨平台进化史

# 第一代:原生开发
  1. 以java为代表的android开发
  2. 以oc代表的ios开发
  3. 以C#为代表的wp开发(已死)
# 第二代:H5+各平台原生API扩展插件

​ 以phonegap为代表,包涵:cordova,inoic等,ui完全使用h5运行再webview上

# 第三代:组件化ui+各平台原生API扩展插件

​ react native 将组件转换为原生UI,调用原生api需要单独引用个平台扩展类库

# 第三点五代:组件化+原生API调用
  1. nativescript 将组件转换为原生UI,通过反射调用原生api,仅一种js语言搞定(笔者最喜欢这个,可惜不流行)

  2. xamarin 将组件转换成原生UI,基于view扩展,通过mono实现自己的虚拟机,将原生api转换成C#类库,原生调用,几乎无性能你损失(甚至超越原生性能),唯一的缺点ui是使用xaml绘制,上手难(无wpf经验),UI偏向企业,xamarin支持多种平台:windows,mac,linux,androi,ios,wp,这完全得益于mono的支持

# 第四代:各平台UI+原生API调用

​ 将kotlin转换成对应平台的语言,唯一缺点UI需要对应平台编写,优点:语法精简,原生性能,屌屌屌!

# 第四代:原生UI+各平台原生API扩展

​ flutter技术,google亲儿子,唯一不爽的是dart语言,ui使用skia重新实现,抛弃历史包袱,2Dui可以达到60帧,好得益于skia,3D有点弱,调用原生需要编写原生的扩展,仅UI部分通用,调用原生UI方便,几乎无侵入性,优点:UI编写快!快!快!缺点:UI维护难!难!难!

​ flutter技术从面世就得到大家的一致追捧,潜力无穷,希望越来越好。

# 第五代:原生UI+原生API调用(臆想)

​ flutter+xamarin:flutter开发UI,有mono提供原生api的访问(已经发现支持的早期版本)。

​ flutter+kotlin:flutter开发UI,kotlin提供原生api的访问。

# 第六代:未来

​ 5G时代,终端仅用于图片的绘制,所有交互全部由服务端提供。