ansiq-macros
ansiq-macros 最重要的是 view!。
它的职责不是发明第二套 runtime,而是把声明式 UI 组合写法接到现有的 widget / Element 模型上。
view! 解决什么问题
只用 builder 时,树结构经常会写成:
Box::column()
.child(Text::new("Header"))
.child(List::new(items))
.child(StatusBar::new("ready"))view! 让它更像一棵声明式树:
view! {
<Box direction={Direction::Column}>
<Text value="Header" />
<List items={items} />
<StatusBar text="ready" />
</Box>
}这不会改变 runtime 的更新方式,只是改变你描述 UI 树的方式。
它和 builder 的关系
最重要的一条是:
- builder 和
view!是两种入口 - 它们最终都会落到同一套
Element/ props 上
这意味着:
- 可以混用
- 不需要为了宏重新学一套 runtime
- 如果某个示例更适合 builder,就没必要强行改成
view!
什么时候更适合用 view!
适合:
- 层级明显的组件树
- 文档示例
- 多个 pane / shell / transcript 组合
不一定更适合:
- 特别短的单 widget 示例
- 循环和条件很多的 builder 代码
推荐继续阅读
- 组件与 view!
- ansiq-widgets
- rustdoc 里的
view!语法支持
Last updated on