在通过 AJAX 加载内容的应用程序中(让我们以博客文章为例),在将加载的内容添加到 DOM 之前将其加载到 HTML 模板中的最合适的方法是什么?
例如,我可能会为我的帖子创建一个简单的 JSON 提要,如下所示:
[
{
"id": 1,
"title": "Title 1",
"time": "2nd August 2013",
"content": "Post content here."
},
...etc
]
我想用来代表帖子的模板:
<li data-id="{{id}}">
<h3>{{title}}</h3>
<small>{{time}}</small>
{{content}}
</li>
我以前使用的几种方法是:
创建一个内容类型设置为 application/javascript 的 .php 文件,并将其作为脚本包含在页面上。使用 PHP 读取目录中的所有 HTML 文件并压缩其内容。将内容作为字符串存储在名为 的全局对象中
HTML
,其中键是 HTML 文件的名称。然后可以通过例如访问模板HTML["post.html"]
。加载帖子时,使用 JavaScript 将可全局访问的 HTML 字符串中的标记替换为帖子内容。优点:所有模板 HTML 都可以在应用程序启动时使用。
缺点:看起来很乱。如果模板很多,则作为 JavaScript 的包含文件会很大。我不喜欢将 HTML 存储在 JavaScript 中的想法。更新 JSON 提要以包含一个
html
字段,存储该帖子的完整 HTML(帖子内容已注入模板)。优点:HTML 只会按需加载,而不是像步骤 1 那样在启动时加载。JavaScript 不需要处理来更新模板。
缺点:JSON 变得更大。除了在 JSON 提要中使用纯粹的帖子相关数据之外,还有其他任何东西感觉很奇怪。每个帖子都重复相同的 HTML,这是不必要的。
不确定是否有更明显更好的方法来做到这一点。如果有,我想知道。理想情况下,模板将存储为单独的 HTML 文件,并且仅按需加载。