对flutter的一些认识

官方文档也大致看了两遍,写了几天的flutter,基本上对于flutter有了一些认识

那么flutter 是什么:

它是google的一套跨平台框架,使用dart语言,支持android,ios,貌似还支持html5,但html5 这块还没有去实践,就不做展开了

说到跨平台框架就不得不拿出来和 ReactNative 和Weex做一下简单比较了

首先看一下他们截至目前为止的GitHub的情况


ok,数据放上来之后,大家就都能做个简单比较了,每个人的答案可能都不一样,下面我写一些个人的小看法

不谈性能,首先从使用上说一下个人比较熟悉的weex,weex是号称write once run everywhere,经历了几次变动,阿里巴巴开源之后,将代码托管给了阿帕奇,然后又请了尤大神过去做vue的兼容,希望全面支持vue。(当然目前又支持了RAX,没有使用过这个,就不做评价了)截止去年使用来说,使用vue开发weex仍然有不少的问题,当然很多问题当无法使用vue解决的时候可以去使用native方案解决,它提供了三种native扩展,这里就不展开了,当使用native去扩展的时候,一个功能,就必须要做三端的实现,说好的 write once run everywhere似乎也就成了泡影。

问题更新 可以看到weex在托管给阿帕奇后更新还算勤快,之后一段时间的commit可以说是完全的验证了weex圈子里面大家常常说的,这或许就是某项目组的KPI项目,对它几乎采取了放养

生态方面

weex的第三方ui库少的可怜,如果weex能完美兼容vue,可以使用现有那些css库就完美了,然鹅现实非常的残忍,weex由于是只能支持css中的 flex布局,所以想要兼容css现有样式库是不可能的了,其次是标签,weex由于是通过引擎将vue生成的index.js文件翻译成native所能识别的标签,所以它只支持它现有的标签,无法支持html的<span><ul>等等无数的标签,能支持的只有weex定义了给我们使用的那些标签,那么又宣告了我们想要快速的写一个非常漂亮的ui界面是不太可能的了,那么如果使用的人越来越多,越来越多的人写出一些开源库出来供大家使用,那么这个事情还是有可能的,可是大家可以看到,weex到目前为止,star人数还不到1w,所以生态还远远没有起来,不过如果你一直使用vue做开发,需要写个app,那么使用weex能非常快速的上手,而且现在已经有了一个相对比较成熟的组件库 weex-ui  不过随着需求的深入,很快你会发现你必须会一点android和ios才能很好的搞定一些问题,那么恭喜你,折腾一两年后你就成了前端全栈了,哈哈,玩笑

上面是对weex使用的时候的问题,这也就是weex从入门到放弃的一个很大原因,本来还写了很多组件,想开源出去,后来想也不愿意再去维护了,所以干脆就不放出去了


然后说一说facebook的react-native

facebook作为html5的先行者,最初全部使用html5去开发所有的app,不过摔了很大的跟头,扎克伯格 也曾经无奈的说facebook犯过最大的错误是在html5 上押注过大。可见html5完全替代原生app的论调是不靠谱的,至少目前来看,不靠谱的。之后它开放了 react 和 react-native,收到市场青睐,可以看到它的star数目也是最多的,有64000多个,不过目前为止没有使用过它,有个朋友曾经使用比较多 于连林 ,有兴趣可以去他博客提问相关问题,印象中他应该也是出过这方面的一本书,了解比较多。反馈也算是比较好,据说生态是相对比较全的


最后说一说今天的主角flutter

Google2018年io大会公布了flutter的beta1.0 版本,相比weex和 react-native,它还是一个小baby。不过大家都知道,Google作为android的亲爹,放出来的东西让人使用起来就更踏实放心了一些。所以虽然刚刚出来不久,已经有了24000 多个star,weex真是想要哭晕在厕所了。

其次使用下来看,起初会有一些不习惯dart来写ui,虽然代码风格和java比较接近,可是毕竟更习惯于使用xml来写布局了,不管是html还是android,对于dart代码行的树形结构还是不是很习惯。但是慢慢习惯了,也还好。

然后是组件支持,用惯了weex的我,看到flutter的组件的支持都快哭了,flutter的组件可以说已经相对比较全面了(当年为了解决一个weex的富文本显示搞死多少脑细胞,flutter的text直接就提供了richtext,能不感动么)。所以flutter刚刚出生,第三方的ui库几户没有,但是有google作为亲爹,一出生就已经给了很多组件,包括各种仿ios的样式,如果要写一个简单app,会非常快。其他的都不太好说吧,毕竟刚刚出来不久,不好说它有多好多坏,个人感觉weex在flutter面前是不够看的,至于react-native就不做评价了

然后有一些个人主观上的看法:google目前已经有了前端框架Angular,个人认为它在全球范围内使用是超过vue很多的,然后google在纯html5 和纯 native之前缺少一个跨平台框架,很明显flutter很好的补足了这一块,基于google现有的angular的生态和native的生态,flutter的生态建立的速度会非常的快。再有一点是Google的说干就干的风格,之前一直认为Google的Android studio不会有多少作为的,看着google还是把它坚持优化坚持推出,再之后是kotlin,现在到了flutter,我们有理由相信它会越来越好,补上现有的不足吧。

目前flutter 的 hotload 还经常出问题,会有一些各种小bug,相信很快都会好起来吧



关于 flutter和其他跨平台框架的性能比较



然后我们对flutter生成的apk看看里面是个什么情况,于是打开apk分析工具查看


我们可以看到一个简单的flutter app中的包的情况,它打包的时候将dart编写的相关程序编译后放到了assets目录下,包括flutter相关的图片字体等等资源文件都放到了 flutter_assets下

其次有一个 libflutter.so 的c lib,这个lib相信就是解析运行flutter的库了,占用包体积略大,有3.4M,然后其余的和普通的Android程序就没有什么区别了




展开阅读全文

没有更多推荐了,返回首页