我们来看一下维基百科的解释,声明式编程是一种编程范式,表达逻辑但不描述具体控制流程。就是告诉计算机我想要什么,而不是告诉它怎么做。那对应到Android就是我想要一个什么样的UI,而不是这个UI应该如何改变,当然UI的自动改变需要框架的支持。
声明式编程在React、Flutter等框架中已经有广泛的应用,声明状态,状态变化,UI自动重绘。
有意思的是,Compose的发起人Jim Sproch之前是React的核心开发人员,他在Slack上聊到VDOM的一些问题,比如vdom分配内存空间在复杂项目中成为性能瓶颈,compose采用调用composable方法的方式,减少内存分配。相比vdom,compose把node隐藏在背后以防滥用,同时可以更方便的使用if/for控制流程。
@Composable
fun CounterInner() {
val count = remember { (mutableStateOf(0)) }
Button(onClick = { count.value += 1 }) {
Text(text = “${count.value}”)
}