将列表渲染到DOM并管理其状态与管理简单变量的状态大相径庭。
一些库使用特殊的标识符,称为“键”,来启用其增量渲染引擎,从而确定发生了哪些更改以及需要移动哪些内容:```javascript {friends.map(friend =>
另一种无需任何猜测的方法是使用可观察集合:一种在更改时发出事件的数组,其中包含有关已更改元素的详细信息,以便渲染引擎可以捕获这些信息并确定渲染页面上更改的最佳方法。在与Rimmel.js一起使用时,这就是可观察集合的用途:
```javascript
class Item {
// 定义项目结构
}
const initial = [ /* 初始数据 */ ];
const data = new ObservableCollection(initial, Item);
const addNew = async () => {
const newItem = await newItemForm.show();
data.push(newItem);
};
document.body.innerHTML = rml`
-
${data}
可观察集合巧妙地代理了所有数组方法,rimmel中的collectionsink知道,一个新项目需要附加到列表的末尾。如果调用.unshift(),它知道需要在开头插入一个新项目,以此类推。
想要替换集合的全部内容?.assign()方法只做这件事,并导致渲染引擎简单地替换DOM中的整个列表。同样,对集合的所有其他变异操作都会将信息传递给Sink,以便它准确地知道要执行哪种DOM变异来反映更改。没有猜测,没有过度设计的DOM差异,总体上非常轻量级、快速。
如果您想亲身体验使用ObservableTypes的便捷性,请尝试一下:
蓝色大气家电商城网站源码,具有适合家电商城的设计风格,预装了基础模块,企业招聘模块,留言反馈模块,会员功能模块,网友点评模块,新闻文章模块,网上购物模块,积分换赠模块等功能模块。具有商品分类、品牌管理、商品管理、支付方法设置、配送方法设置、会员类型设置、会员账户管理、会员积分管理、订单管理、订单统计、销售统计、商品搜索、商品分类查询、商品品牌查询、商品订购、在线支付、商品评论等B2C电子商务功能;










