服务器端模板,客户端模板 – 自动转换?

随着jQuery模板插件的发生,我想知道如何维护服务器端和客户端模板。

因为在我的情况下,我有一些模板,这将是重复的 – 服务器端和客户端。 想象一下:

您有一个表单,您可以在其中输入列表点。 当您按提交时,会生成一个AJAX请求,但该条目已显示在您的页面上。

现在,这个项目符号点的标记应该是相同的 – 它是通过JS或我的PHP / .NET /任何应用程序生成的。

有没有什么好方法可以维护这些模板/保持同步? 或者我真的必须手动维护两个模板?

您在使用JS模板的应用程序方面有什么经验?

如果您喜欢JS-> PHP优先级 :)那么您有两个用于PHP后端的jquery-tmpl兼容模板渲染器

  1. https://github.com/abackstrom/jquery-tmpl-php
  2. https://github.com/xyu/jquery-tmpl-php

如果您更喜欢PHP-> JS优先级 :)那么您可以尝试这个Javascript实现流行的PHP模板Smarty

  1. http://code.google.com/p/jsmart/

或者你可以尝试更中性的东西:

  1. 小胡子http://mustache.github.com/

我的同事是你提到的.NET解析器的作者,所以我用了很多东西在客户端和服务器之间共享模板。 要清楚 – 它是相同的模板,相同的文件,无论它是在客户端还是服务器上进行解析。 所以没有重复/维护头痛,这是非常好的。

我们遇到的唯一警告是高级逻辑。 模板渲染的数据在渲染时或多或少需要打印。 因此,检查数组长度需要是布尔值,结果是,字符串需要复数,日期需要格式化等等。我相信Aaron正在研究将函数作为命名参数传递给.NET版本的方法,以便例如,客户端模板范围内可用的复数函数可以在C#中复制并在服务器上以相同的方式使用,允许在模板中进行更多的逻辑和处理。 尽管如此,即使必须对数据进行预处理,它仍然非常有用。

Spark View Engine(.NET)具有javascript呈现function: http : //blog.robertgreyling.com/2009/11/teaching-javascript-how-to-render-your.html

另一种只有一组模板的方法是只进行服务器端渲染,使用ajax从服务器获取更新的html。

我通常把它们存放在视图上 ; 在这里,我将告诉你一个我为jquery-tmpl找到的一个非常有趣的用例。

我在一个网站上使用了jquery-tmpl ,由于请求量很大,我需要一种技术,我称之为decontextualization 。 这项技术的实施只是为了在高峰时段保持活力,它完全由以下规则组成:

  1. 切勿触摸服务器以多次重新生成页面; 除非它绝对必要。
  2. 使用JavaScript提供用户是以及他拥有什么权限的状态。

考虑到这两个规则,你可能会注意到jquery-tmpl与它提供的基本逻辑量对于给定的情况来说简直是雄伟的。 我所做的基本上是将jquery-tmpl模板包含在需要进行descontextualized的文档中。 所有模板都是由页面本身提供的; 所以我可以创建一个d18n javascript库,可以执行以下操作:

  1. 查询关于当前用户的非常快速的脚本,将数据作为JSON对象返回。
  2. 遍历JSON并在指定选择器上包含文档上提供的模板。 让jquery-tmpl做数学运算。

每当我们需要对“tempalte”进行修改时,如果没有可用的jquery-tmpl ,我们就会按照我们的方式jquery-tmpl在视图/部分上

您可以在“用户编辑post中查看”这样的内容吗? 模板:

  

希望我的经验在某种程度上对你有用。

我使用XSLT。 不是每个人都喜欢它的语法,但它交叉浏览器,快速和有效 – 你甚至可以通过使用一个目标嵌入式iframe的表单来进行客户端模板而不需要太多任何脚本 – 具有小的优势 – 电线文件(略大于json,但不多)。 iOS设备不支持它; 这些将需要使用服务器模板化的版本 – 但好的是,使用相同的模板可以轻松实现。

我不是javascript模板库的忠实粉丝:它们很复杂,依赖于版本,通常工具很差,在浏览器更改时容易破坏,并且通常会将您绑定到特定的javascript库。