查看rivets.js。
rivets 是一个轻量级(3.4kb 压缩和压缩)和强大的数据绑定和模板库。
Rivets.js 与您的模型/控制器层完全无关,并且可以很好地与采用事件驱动模型的现有库(例如 Backbone.js 和 Stapes.js)配合使用。它附带一个内置适配器,用于使用 ES5 本机订阅普通 JS 对象,但是可以将其替换为 Watch.JS 适配器或 Object.observe 适配器。
您可以通过 Rivets.js 获得一些开箱即用的功能:
- 与 DOM 节点之间的双向数据绑定。
- 通过依赖映射计算属性。
- 允许通过管道改变值的格式化程序。
- 用于绑定数组中的项的迭代绑定。
- 自定义事件处理程序以适合您的理想工作流程。
- 统一的 API 可轻松扩展任何核心概念。
铆钉使用DOM-based templating system:
Rivets.js 不是将模板字符串解析和编译成 HTML,而是将您的模型直接连接到 DOM 的现有部分,这些部分直接在 DOM 节点上包含绑定声明和控制流指令。您只需在绑定到父 DOM 节点时传入您的模型,其余的由 Rivets.js 处理。
简而言之,例如假设您想在产品对象中显示数据,例如:
var productInfo= {
name: "test",
price: 1000
}
在以下 HTML 中:
<ul id="product">
<li>Name</li>
<li>Price</li>
</ul>
您可以使用铆钉来绑定数据,例如:
rivets.bind($('#product'), {
product: productInfo // product will be the alias name inside HTML template
});
而对应的铆钉模板将是:
<ul id="product">
<li rv-text="product.name"></li>
<li v-text="product.price"></li>
</ul>
或更多语义:
<ul id="product">
<li data-rv-text="product.name"></li>
<li data-rv-text="product.price"></li>
</ul>
rivets.bind 方法接受模板元素、模型数据以及您希望从主铆钉对象覆盖的任何选项(可选)
或者,如果您要绑定一个产品对象数组:
rivets.bind($('#product'), {
product: ProductArray // where productArray is an array of products
});
您可以使用 rv-each 来使用迭代绑定,例如:
<ul class="products" data-rv-each-product="products">
<li data-rv-text="product.name"></li>
<li data-rv-text="product.price"></li>
</ul>
铆钉将根据数组中的项目创建n的列表数量。
您可以在guide 中找到更多很酷的功能。