PHP和JavaScript模板的互换性(防止重复)

PHP和JavaScript模板的互换性(防止重复),php,javascript,json,model-view-controller,mootools,Php,Javascript,Json,Model View Controller,Mootools,我使用MVC PHP框架尽可能保持我的web应用程序干燥。我所有的HTML模板都整齐地隐藏在项目应用范围内的一个文件夹中 问题是,每当我使用JSON字符串用AJAX构建页面时,我都需要重用这些模板中的许多行,并将它们复制到JavaScript文件中的某个地方。这意味着JavaScript文件中的模板和PHP应用程序中的模板之间存在代码重复 我想知道如何防止这种重复。一种方法当然是使用AJAX加载模板,但是我最终会得到一个针对一个页面的双AJAX请求。此外,PHP模板使用与MooTools不同的标

我使用MVC PHP框架尽可能保持我的web应用程序干燥。我所有的HTML模板都整齐地隐藏在项目应用范围内的一个文件夹中

问题是,每当我使用JSON字符串用AJAX构建页面时,我都需要重用这些模板中的许多行,并将它们复制到JavaScript文件中的某个地方。这意味着JavaScript文件中的模板和PHP应用程序中的模板之间存在代码重复

我想知道如何防止这种重复。一种方法当然是使用AJAX加载模板,但是我最终会得到一个针对一个页面的双AJAX请求。此外,PHP模板使用与MooTools不同的标记样式来表示变量,但HTML设置是相同的

总结一下:是否有任何简洁的方法或工具可以防止模板的重复,从而使一个文件可以在PHP和JavaScript中使用?作为记录:我使用MooTools框架构建JavaScript文件

编辑

经过一些研究,我找到了我认为最好的答案。对于感兴趣的人:

PURE将HTML表示和JavaScript逻辑完全分离,因此您不必费心在脚本中包含HTML元素。模板可以简单地在HTML文件本身中提供

例如:

// JSON string
{ 'who': 'me' }

// In your rendered HTML page:
<div id="who"></div>

// After the JSON string is sent back
<div id="who">me</div>
//JSON字符串
{“谁”:“我”}
//在呈现的HTML页面中:
//在返回JSON字符串之后
我

此外,它还可供多种库使用:MooTools、jQuery、dojo、Prototype等。

您可能正在寻找一种可用于多种语言的模板语言,以便跨语言边界重复使用模板


一种这样的模板语言是,可以同时使用和多种语言。

我有时也会遇到一个有趣的问题

  • 您可以将html放在javascript代码中,这是重复的,您希望避免重复

  • 您可以使用单独的ajax调用加载html,这会导致运行更多ajax调用,并且可能会减慢应用程序的速度。你可能想要避免它

  • 您可以在将加载数据的Ajax调用中传递html。这样,你只有一个电话。让PHP打开模板,并将它们添加到数据json流中

  • 您可以将模板放入原始html中,将其作为隐藏

我会选择解决方案3,如果模板很小且有限,可能会选择解决方案4


JSon将类似于{“data”:…您的原始数据对象,“templates”:{…}

谢谢您的回答。选项3的问题是,与其使用JSON,不如使用HTML作为AJAX请求的响应字符串。我想防止这种情况发生。在这种情况下,选项4似乎是最好的。我已经在使用mustache,但问题仍然是,我必须使用额外的AJAX请求来获取模板。您可以将模板包含在可缓存js文件中的变量中,您知道mootools支持
string.substitute(obj)
其中字符串将包含对对象属性的引用,例如,
“{name}”.substitute(userobj)
返回字符串中userobj.name的值,这可以提供良好的模式重用。另外,看看mooml pluginI know,但是substitute不允许简单的
if
或重复操作,使用mooml,您仍然必须用JavaScript提供模板,而是用对象提供模板。