服务器端模板,客户端模板 – 自动转换?
随着jQuery模板插件的发生,我想知道如何维护服务器端和客户端模板。
因为在我的情况下,我有一些模板,这将是重复的 – 服务器端和客户端。 想象一下:
您有一个表单,您可以在其中输入列表点。 当您按提交时,会生成一个AJAX请求,但该条目已显示在您的页面上。
现在,这个项目符号点的标记应该是相同的 – 它是通过JS或我的PHP / .NET /任何应用程序生成的。
有没有什么好方法可以维护这些模板/保持同步? 或者我真的必须手动维护两个模板?
您在使用JS模板的应用程序方面有什么经验?
如果您喜欢JS-> PHP优先级 :)那么您有两个用于PHP后端的jquery-tmpl兼容模板渲染器
如果您更喜欢PHP-> JS优先级 :)那么您可以尝试这个Javascript实现流行的PHP模板Smarty
或者你可以尝试更中性的东西:
- 小胡子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
。 这项技术的实施只是为了在高峰时段保持活力,它完全由以下规则组成:
- 切勿触摸服务器以多次重新生成页面; 除非它绝对必要。
- 使用JavaScript提供用户是谁以及他拥有什么权限的状态。
考虑到这两个规则,你可能会注意到jquery-tmpl
与它提供的基本逻辑量对于给定的情况来说简直是雄伟的。 我所做的基本上是将jquery-tmpl
模板包含在需要进行descontextualized的文档中。 所有模板都是由页面本身提供的; 所以我可以创建一个d18n
javascript库,可以执行以下操作:
- 查询关于当前用户的非常快速的脚本,将数据作为JSON对象返回。
- 遍历JSON并在指定选择器上包含文档上提供的模板。 让
jquery-tmpl
做数学运算。
每当我们需要对“tempalte”进行修改时,如果没有可用的jquery-tmpl
,我们就会按照我们的方式jquery-tmpl
: 在视图/部分上 。
您可以在“用户编辑post中查看”这样的内容吗? 模板:
希望我的经验在某种程度上对你有用。
我使用XSLT。 不是每个人都喜欢它的语法,但它是交叉浏览器,快速和有效 – 你甚至可以通过使用一个目标嵌入式iframe的表单来进行客户端模板而不需要太多任何脚本 – 具有小的优势 – 电线文件(略大于json,但不多)。 iOS设备不支持它; 这些将需要使用服务器模板化的版本 – 但好的是,使用相同的模板可以轻松实现。
我不是javascript模板库的忠实粉丝:它们很复杂,依赖于版本,通常工具很差,在浏览器更改时容易破坏,并且通常会将您绑定到特定的javascript库。