>
* 原文链接 : android ui development made easy
* 译者 : chaossss
* 校对者: ZhaoKaiQiang
* 状态 : 校对完成
如果你觉得这篇文章太长,而且还没有往下阅读的话,我可以给你简要的介绍文章要讲的内容:我使用纯 Java 通过数据绑定的方式提供了一种
Android UI 开发的代码往往是支离破碎的,写出来的代码通常都是大量的模板化代码,而且没有结构可言。下面是一些问题(纯属个人见解):
Android UI 开发很少符合 MVC 模式(或者是 M-V-其他任何东西)
XML文件通常包含了很多重复的代码,在代码复用方面比较糟糕
XMLS 非常脆弱,这使得你在写 XML 文件时,即使输入了 TextVeiw ,在编译过程中编译器也不会警告你,但在 App 运行时又会抛出 InflateException 异常
缺少对 styles 的支持,缺少对变量的支持,不支持宏和计算结果(例如 10dp + 2px)
没有数据绑定,这使得你必须自己把所有的 findViewById 和 setOn…Listener 写好
你可以通过 Java 实现你的布局,但是写出来的代码有如天书
使用 mithril.js 建立用户接口
在 Web 开发中,开发者们很快就意识到在没有 MVx 的情况下开发复杂的应用会很吃力,这使得他们意识到 jQuery 中存在的问题,并开发了 Backbone,Knockout,Angular,Ember…等等,来提高他们的开发效率
但在 Android 中,我们还在通过那一点点函数毫无章法可言地设置 View 的属性,就像在 jQuery 里一样:
$('.myview').text('Hello');
$('.myview').on('click', function() {
});
myView.setText("Hello");
myView.setOnClickListener(new View.OnClickListener() { ...});
我们在一个目录下定义了我们的 Layout ,又在另一个目录中使用它们,然后在 UI 开发的代码里改变
,这样并不好。
React.js 对 Web 开发有一点点影响:他们以树状关系的自定义对象创建了一个虚拟的 DOM 概念,并以此展示实际的 HTML 布局。虚拟树创建和切换的时间都很短,所以当实际的 DOM 需要被渲染,两棵虚拟树(前一棵和新的那棵)将进行对比,只有不匹配的部分才会被渲染。
Mithril.js 是一个精悍、短小的框架,使用它能使 React.js 的实现更整洁。在 Mithril 中,除了纯 JavaScript,你几乎能摆脱一切,同时,它还能让你在写布局的时候感受到图灵完备的语言所具备的力量。