本篇文章将从性能和算法的角度比较 Binding.scala 和其他框架的渲染机制。 3 Binding.scala的精确数据绑定 Binding.scala 使用精确数据绑定算法来渲染 DOM 。 在 Binding.scala 中,你可以用 @dom 注解声明数据绑定表达式。 这些概念在 Binding.scala 中根本不存在。因为 Binding.scala 的 @dom 方法描述的是变量之间的关系。 相关链接: Binding.scala 项目主页 Binding.scala • TodoMVC 项目主页 Binding.scala • TodoMVC DEMO Binding.scala • TodoMVC 快速上手指南 Binding.scala API参考文档 Binding.scala 的 Gitter 聊天室 ----
Bingding.scala 的基本用法 在讲解Binding.scala如何实现标签编辑器以前,我先介绍一些Binding.scala的基础知识: Binding.scala中的最小复用单位是数据绑定表达式 你可以参见附录:Binding.scala快速上手指南,学习上手Binding.scala开发的具体步骤。 对比 ReactJS 和 Binding.scala 的代码,可以发现以下区别: Binding.scala 的开发者可以用类似 tagPicker 这样的 @dom 方法表示 HTML 模板,而不需要组件概念 Binding.scala 的开发者可以在方法内定义局部变量表示状态,而不需要 state 概念。 总的来说Binding.scala要比ReactJS精简不少。 本系列下一篇文章将比较 ReactJS 的虚拟 DOM 机制和 Binding.scala 的精确数据绑定机制,揭开 ReactJS 和 Binding.scala 相似用法背后隐藏的不同算法
这个提案可能预示着 Scala 3、Scala.js和Binding.scala的未来前景。为什么这么说?还得先聊聊Scala目前在编程语言界的江湖地位是怎么来的。 比如Binding.scala实现了一套数据绑定的monad,然后利用这套monad,结合Scala的XML字面量功能实现了反应式的HTML模板。 Binding.scala这样的框架很难在Scala.js以外的技术栈实现出来。 那么,如果想要把XML翻译成其他库(比如Binding.scala),就需要再写一个宏或者编译器插件,把对scala.xml的调用翻译成对其他库的调用。 宏或者编译器插件的编写难度很大,所以能像Binding.scala这样利用起XML字面量的库很少。