简介
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。它也是构建未来的Google Fuchsia 应用的主要方式。
Flutter的优势
目前常见的跨平台解决方案
- Hybrid App:使用HTML5+WebView+原生的混合开发模式,这种开发模式在使用web技术栈所以开发效率高并且社区及资源都是非常丰富,但其过渡依赖WebView所带来的性能上的瓶颈也是被诟病的地方;
- 桥接Native组件:使用原生进行渲染的weex和RN等技术,因为需要依赖原生组件,导致需要在不同平台维护一套对应的组件,使开发效率降低,开发成本变高,同时对于个人开发者的门槛也变得更高。
那么有没有一种即不依赖系统原生控件,又能保证不同平台UI的一致性,学习成本又相对较低的技术呢?
有!Flutter就属于这一类技术当中的一员。
Flutter与混合开发和Weex等技术的最大区别在于,Flutter并不依赖JS与WebView,而是使用Dart作为编程语言,使用Skia作为渲染引擎。
这样做的优点就是:
- 使用自绘引擎是直接调用系统API来绘制UI,性能瓶颈完全由引擎能力和操作系统来决定,不会出现因为某一项技术等其他原因受到限制,所以性能和原生控件接近,同时也保证了在Android和iOS上UI的一致性,而且也可以避免对原生控件过渡依赖而带来的限制及高昂的维护成本;
- 不使用HTML5+JS作为开发语言,所以不会因为依赖WebView而出现性能的瓶颈;
- Dart对比JS更加先进的设计,JS由于设计初衷和"只有一个JS"的理念导致一些语法上和设计上的遗留问题显得不够优雅和符合直觉(虽然在es6里开始有改变了,但是依然会有很多直觉对但是执行错的问题),而且JS虽然现在广泛应用在各个领域,但因为其设计初衷只是在浏览器运行,导致在其他平台会有一些短手的缺陷,而Dart对于JS的缺陷作出了修复,同时也保证了语法的易学性以及运行性能;
- 而且据说Dart的开发团队就在Flutter团队的旁边,这样也保证了Dart可以为Flutter做出更多的针对性优化。
类似的还有QT Moblie,笔者用QT开发过点PC端的应用,也稍微了解过一点QT Moblie,总的来说就是,不管使用QT来写也好,还是用QML来写也好,由于QT本身UI库中提供的东西都太基础了,导致几乎什么都要自己来实现,而且社区资料也不是很丰富,写起来那叫一个酸爽...
Flutter的未来
在国内
国内现在也只听说闲鱼是使用Flutter重构了一波,体验了一下感觉也还不错,如果闲鱼的重构能够取得成功的话,在阿里内部取代掉Weex也不是不可能。
在谷歌
目前来看谷歌内部在Dart和Flutter的使用上是呈现上升趋势的,这可能是因为谷歌想要摆脱"java"的原因,也可能是因为想要建立一个"新世界",成为"新世界的卡密",但不得不承认Flutter这个浪花正在袭来,至于这个浪花能滚多大只能交给时间来证明了。
以上就是对Flutter的一个初步认识了,下一篇会是编程的经典步骤Hello world环节,以及Dart语言的初探。
撒,开始我们的Flutter学习之路吧~
(希望能把这个Flutter学习系列写下去吧,毕竟人类本质鸽子精,咕咕咕)