为后端和前端视图(PHP,Backbone)定义一次HTML


Define HTML once for backend and frontend view (PHP, Backbone)

我有一个应用程序。我希望它能够在不完全依赖JavaScript的情况下加载内容。但是,我有一些页面想要自动刷新数据而不进行页面重新加载。我计划使用 ajax (json) 和骨干/下划线模板来做到这一点。问题是我不想两次编写相同的 HTML - 一次在后端模板/视图中(用于页面重新加载,也支持非 JS),另一次在前端模板中。我知道我可以使用 AJAX 从服务器请求 HTML 部分,但我宁愿只请求 JSON。我想将带宽保持在最低限度,即使去除任何JavaScript和/或样式的HTML仍然是太多的冗余数据(标签,空格等)。

一个想法是,如果有一个模板引擎使用与 PHP 模板相同的语法,但我不知道这是否存在。我会一直听听人们倾向于如何处理这个问题,或者我应该在两个地方编写相同的 HTML?谢谢

你说你只想从服务器请求JSON。您打算如何将模板传递给JS?大概您需要在初始页面加载期间将模板传递给客户端。

如果是这样,那么我建议您使用 JS 在页面加载时以及刷新页面时呈现此模板,而不是使用 PHP 进行页面加载,然后使用 JS。

你可以让 PHP 为模板渲染一个容器元素,然后在 DOM 准备就绪时,让 JS 用渲染的模板填充这个容器。