7 个不稳定版本
0.4.0 | 2021 年 5 月 15 日 |
---|---|
0.3.2 | 2020 年 9 月 8 日 |
0.3.1 | 2020 年 8 月 16 日 |
0.3.0 | 2020 年 6 月 30 日 |
0.1.1 | 2019 年 11 月 11 日 |
#2166 in Web 编程
2,458 每月下载量
在 5 crates 中使用
690KB
15K SLoC
Yewtil
Yew 前端 Web 框架的实用工具包。
这个包原本包含一个领域特定语言,它允许在不使用
html!
宏的情况下创建组件,但现在这部分已经移动到另一个包中(yew-dsl
)。
目的
提供一个地方来存放与 Yew 常用的实用工具,而不必将它们包含在核心 Yew 包中。正因为如此,Yew 包可以进行破坏性的变更,这将导致 yewtil
与 Yew 不兼容。
特性
目前,这个包以“稳定”的方式支持以下特性
NeqAssign
- 使为ShouldRender
分配属性并返回相关值变得更容易。- 纯组件 - 使用
PureComponent
特性和Pure
组件适配器实现纯组件。这应该会使定义不包含状态的简单组件变得更加容易。- 函数组件 - 一个宏,它接受一个返回
Html
的函数并将其转换为纯组件。
- 函数组件 - 一个宏,它接受一个返回
Mrc
/Irc
智能指针 - 比 Rc 更易于在 Yew 中使用的类似指针。History
- 一个包装器,它保存分配给它的值的记录。Effect
- 通过在html!
回调中定义要更改的内容,而不是在Component::update()
中处理消息来更新组件状态的方式。(已弃用)
此crate还具有功能标志,可以启用以下 实验性 功能
Lrc
智能指针 - 在链表上实现的类似于 Rc 的指针,允许进行新颖的状态更新机制和遍历链式共享指针。(需要模糊测试以确保不会泄漏。)(已弃用)
这些实验性功能可能没有得到充分的审查,可能会发生重大变化或被删除。
示例项目
查看纯组件示例,了解纯组件是如何工作的。
示例用法
neq_assign
fn change(&mut self, props: Self::Properties) -> ShouldRender {
self.props.neq_assign(props)
}
纯组件
pub type Button = Pure<PureButton>;
#[derive(PartialEq, Clone, Properties)]
pub struct PureButton {
pub callback: Callback<Msg>,
#[prop_or_default]
pub text: String,
}
impl PureComponent for PureButton {
fn render(&self) -> VNode {
html! {
<button onclick=&self.callback>{ &self.text }</button>
}
}
}
历史
pub struct Model {
text: History<String>,
}
// ...
fn update(&mut self, msg: Self::Message) -> ShouldRender {
match msg {
Msg::SetText(text) => self.text.neq_set(text),
Msg::Reset => self.text.reset(),
Msg::Forget => {
self.text.forget();
false
}
}
}
更新计划
此crate将针对稳定的Yew。
随着Yew引入新的语法,此crate可能会看到一些更新,但由于这些更新的罕见性,此crate可能保持未更改一段时间。
范围
与主Yew crate相比,此crate对其代码的要求不那么严格;如果您想包含函数、类型或特性,请提交一个pull request或issue。
欢迎组件,但它们不得有外部依赖,应解决Yew用户遇到的一些问题,如果可能的话,应允许主题化,如自动滚动的包装器、RecyclerView/无限滚动组件或可能的全功能输入组件。
如模态框或下拉菜单等常见UI元素最好留给组件库,因为它们通常与用于显示它们的CSS相关联。 Yewtify crate就是这样一个组件库。
稳定性
由于此crate旨在提供各种辅助类型、特性和函数,而每个功能的效用可能在添加功能时未知,因此新添加的功能可能不会包含在默认功能集中,并且可能被保留在功能标志后面。
在早期开发期间,标记为 experimental
的功能可能会频繁更改或甚至完全删除,而标记为 stable
的功能则不会删除,并且可以信赖其不会发生重大变化。
依赖关系
~2.5–6MB
~109K SLoC