本人主要是做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使用起来差别不大,用起来简单明了,开发效率那是大大的提升,还不用担心屏幕尺寸的兼容性问题!
改变习惯确实令人不适,但还是要拥抱新事物,官方不断推陈出新,我们也要不断学习,提升自己,编程语言存在差异,但好的编程思想可以通用,语言的改进是为了实现更好的编程理念,终极目的都是为了提升效率!
啰嗦完毕!