jsRender和jsViews之间的区别

时间:2012-04-01 15:22:57

标签: javascript jquery jquery-templates jsrender jsviews

因此,jQuery模板永远不会超过测试版,而jsRenderjsViews应该填补空白。我查看了Boris Moorethis page上发布的示例,但我没有区分jsRender和jsViews。此外,鲍里斯在另一个例子中使用了一个来增加混乱。那么问题是它们中的两个是如何相关(或不同)的呢?

3 个答案:

答案 0 :(得分:50)

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

JsRender可以帮助您使用模板呈现HTML(静态HTML / CSS,嵌入的令牌被数据替换)。它支持简单的逻辑,渲染值和自定义函数。

JsViews构建于JsRender之上,为对象/属性增加了可观察性。这允许您将json对象链接到HTML目标并获得双向数据绑定。

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

答案 1 :(得分:2)

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>

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

答案 2 :(得分:1)

来自文档:

  

JsRender用于将模板呈现给字符串,准备好了   插入DOM。

     

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