拥抱声明式UI

本人主要是做APP开发的,之前也或多或少接触过小程序开发,了解过angular vue 以及 Thymeleaf 等前端的框架,前辈们为了提高UI开发效率,做了各种尝试!

Android应用层使用Java编写,其UI API设计也是参照了Java SWT,Android View代码量也可谓惊人,带状态的View自己管理状态,命令式编程中处理带状态的UI组件也要特别小心,代码改变组件状态可能无意中改变数据,一些系统组件还有惊喜大礼包,比如 Android 的 RadioGroup,调用 RadioGroup 的 check 方法选中某个 RadioButton,会触发3次 onCheckChanged 事件,为了改进开发体验,Google 也推出了不少拓展库,但一直都是基于传统的UI系统,不能更好的实践MVVM模式,而WEB端的声明式UI早已走在了前头,这也是为什么很多人去使用JS做APP开发,除了开发体验好,还能跨平台,虽然性能跟体积等遭到吐槽,依然有很多人选择JS,本人固执地坚守原生开发,Google先是在 Flutter 上实践了声明式UI,但是Dart语言生态系统一直不温不火的,Android系统版本又跟Java版本捆绑,新版的Java的很多新特性都使用不上,Kotlin的出现改变了这种状况,这里不得不佩服Kotlin团队的前瞻性,这门语言跟Dart同年诞生,但是完全兼容Java,其语法也相当精简,当搭上Android的顺风车后,混的比Dart要好,Spring Boot也接纳了 Kotlin,Android系统版本并没有跟Kotlin版本捆绑,再加上其语言拓展能力和精简的语法,Google 在2019年推出了基于 Kotlin 的声明式UI:Compose,声明式UI的主要特点是使用编码的方式创建UI、Controller Model 跟 View 严格分开、自动更新,可能刚开始不太习惯,但是熟悉了之后简直不要太爽!

最近接触iOS开发,基本入门,其传统的UI方式,布局起来实在是不习惯,一直没搞懂iOS的约束,干脆放弃了,既然官方都推出了声明式UI:SwiftUI,何苦为难自己!体验了一把SwiftUI后,感觉Android、iOS的声明式UI使用起来差别不大,用起来简单明了,开发效率那是大大的提升,还不用担心屏幕尺寸的兼容性问题!

改变习惯确实令人不适,但还是要拥抱新事物,官方不断推陈出新,我们也要不断学习,提升自己,编程语言存在差异,但好的编程思想可以通用,语言的改进是为了实现更好的编程理念,终极目的都是为了提升效率!

啰嗦完毕!

介绍:facebook开源了litho一个高效的声明UI框架。运行效果:使用说明:dependencies {   // ...   // Litho   compile 'com.facebook.litho:litho-core:0.2.0'   compile 'com.facebook.litho:litho-widget:0.2.0'   provided 'com.facebook.litho:litho-annotations:0.2.0'     annotationProcessor 'com.facebook.litho:litho-processor:0.2.0'      // SoLoader    compile 'com.facebook.soloader:soloader:0.2.0'     // Optional   // For debugging   debugCompile 'com.facebook.litho:litho-stetho:0.2.0'     // For integration with Fresco   debugCompile 'com.facebook.litho:litho-fresco:0.2.0'     // For testing   testCompile 'com.facebook.litho:litho-testing:0.2.0' }测试是否安装成功可以在activity中使用Litho创建一个view来测试是否安装成功。首先,初始化SoLoader。Litho依赖于SoLoader,它帮助加载由布局引擎Yoga提供的本地库。Application类适合做这件事情:[MyApplication.java] public class MyApplication extends Application {     @Override   public void onCreate() {     super.onCreate();          SoLoader.init(this, false);   } }然后把一个Litho文本控件放到一个activity中,显示“Hello World!”:[MyActivity.java] import com.facebook.litho.ComponentContext; import com.facebook.litho.LithoView;   public class MyActivity extends Activity {     @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);          final ComponentContext c = new ComponentContext(this);       final LithoView lithoView = LithoView.create(       this /* context */,        Text.create(c)             .text("Hello, World!")             .textSizeDip(50)             .build());            setContentView(lithoView);   } }现在运行app应该就能看到屏幕上显示“Hello World!” 了。注:不久前翻译了一篇文章Components for Android: 一个高效的声明UI框架 ,现在判断就是说的这个库了,那个时候还没开源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值