为什么Flutter放弃xml而使用代码写布局

在Flutter的Github的Issue上有人提出了一个问题:Consider JSX-like syntax inside dart code。问题传送门

这让我想起之前曾经有人问

为什么Flutter放弃xml而使用代码写布局?

对于这个问题,我正好有一些思考,借助这篇文章说说我的看法。

我认为Flutter有必要舍弃xml,使用代码写布局。因为使用代码来组织布局,会是未来的新趋势,至少是一个方向。

已有语言尝试代码组织布局

用相对现代化的语言Kotlin写Android App时,我发现JetBrains搞了一个gradle插件用来支持在代码里写布局。可见Kotlin是支持和提倡用DSL代码来写布局的。

链接里的issue讨论中提到JSX,JSX的理念我赞同(刚刷了一篇文章,文中提到,组件模板和组件逻辑分离让问题复杂化了,应该让模板和组件关联),flutter现在也是朝这个方向来的。

和Hot Reload特性搭配

Flutter舍弃xml使用代码描述布局,能更方便的和Dart的hot reload特性配合使用,代码改动能立刻反映布局变化。

后续更有力的资源支持

之前参加flutter技术分享,我问过这个问题,谷歌工程师给的答复是,后续会进一步增强Dart的语言特性,让代码组织widget tree起来更易读更简洁。比如Dart2比Dart1多了一个特性:可以省略new关键词。

说个题外话,他们还透露了目前他们花了大量精力在减少开发Flutter依赖包的大小,目标是把在安卓的包从8M减到5M, iOS的从16M减到9M左右。

未来肯定会出现对布局和语法高亮的Dart插件,让开发人员阅读布局代码更舒适。

查阅的资料