25

所以 jQuery 模板永远不会超过 beta,而jsRenderjsViews应该填补这个空白。我查看了Boris Moore此页面上发布的示例,但我不明白 jsRender 和 jsViews 之间的区别。此外,鲍里斯在另一个例子中使用了一个来增加混乱。所以问题是它们中的两个如何相关(或不同)?

4

3 回答 3

50

JsRender 是模板引擎。JsViews 是数据绑定引擎。

JsRender 帮助您使用模板渲染 HTML(带有嵌入标记的静态 HTML/CSS,这些标记会被数据替换)。它支持简单的逻辑、渲染值和自定义函数。

JsViews 建立在 JsRender 之上,增加了对象/属性的可观察性。这允许您将 json 对象链接到 HTML 目标并获得 2 路数据绑定。

当然,他们还有更多,但这是 60 秒的答案。这有帮助吗?

于 2012-04-01T22:39:35.870 回答
3

jsRender 只是模板,其中 jsViews 是模板,也是数据绑定。因此,如果您只想从对象、列表或类中输出数据,那么您将使用 jsRender。因此,渲染一个模板。jsViews,将用于实时数据绑定,以及许多其他奇妙的功能。因此,如果您使用它渲染了一个模板,并且有一个数据绑定字段,那么当您在客户端修改它时,它实际上是将对象修改为您从中获取它的对象。

例如,这是我工作中的这个小片段中对它的真实使用。

//this is the script that handles the template
<script id="questionResourceTemplate" type="text/x-jquery-tmpl">
    <li class="default-{{:IsDefault}}">
        <label data-link="visible{:!IsPageSpecific}" class="surv mleft5"><strong>{{:Type}}</strong></label>
        <label data-link="visible{:IsPageSpecific}" class="surv mleft5"><input type="text" data-link="Type" /></label>
        <a data-link="visible{:IsDefault}" href="#" action="deletequestionresource">Delete</a>
        <br />
        {^{for QuestionResourceTexts tmpl="#textTemplate" ~parentQuestionResource=#data ~textboxClass="textbox" /}}
   </li>
</script>

这就是它在 HTML 中使用的地方

<ul class="question-resource-list">
    {^{for QuestionResources tmpl="#questionResourceTemplate" ~parentQuestion=#data /}}
</ul>

因此,在此对象的每次出现中,它都会呈现模板。我们这里也有辅助函数。您可以将它们用于诸如返回布尔值以进行测试,然后在绑定期间像包装器一样对数据进行操作。希望这有助于添加在此响应之前已回答的已经完美的响应。

于 2013-06-14T03:29:52.863 回答
1

从文档:

JsRender 用于将模板渲染为字符串,以便插入 DOM。

它也被 JsViews 平台使用,它为 JsRender 模板添加了数据绑定,并提供了一个成熟的 MVVM 平台,用于轻松创建交互式数据驱动的单页应用程序和网站。

于 2015-08-06T14:06:50.913 回答