良好的DRY方法渲染和页面的AJAX更新

Rya*_*yan 6 ajax jquery

想象一下一个评论网站,用户可以在其中输入评分和可选的简短评论

在每个评论页面上你都有很多评论 - 这些评论显示在页面末尾的表格中(顺便说一句 - 没有找到数据网格类型的控件,对于它来说太简单了)

我想让用户输入新评论并更新页面而不刷新页面.(到目前为止所有简单的东西,这不是问题)

为页面生成的好方法是什么?一些想法: -

  1. 生成评论HTML服务器端,使用javascript客户端附加新评论.缺点是你在两个地方都有表格HTML生成代码.好处 - 就搜索引擎而言,页面上的内容更多.

  2. 服务器端仅将评论输出为json/xml/whatever,并使用javasript在页面加载时动态呈现HTML.

    缺点 - javascript中的"模板",设计师难以自定义+页面上缺少"内容".

  3. 是否有一种方法结合了两种方法 - 即一个模板框架,它将呈现现有数据服务器端,但也发送模板片段客户端,以便可以在那里重复使用以进行添加/编辑.

  4. 用(2)得到初始页面加载的数据就可以了

    • a)在初始页面上包含json/xml,并在页面加载时运行客户端渲染

    • b)在页面加载时通过单独的AJAX调用获取它(+更简单, - 额外请求和延迟)

我专注于jQuery/Django,但这个问题适用于其他框架和AJAX库.

这是一个主观的问题,希望它不会超越线!思考?

Mat*_*son 2

有了框架,您的场景 (3) 的一种方法(结合这两种方法)就是使用“部分”视图。部分视图是可以单独渲染的视图片段;单个视图可以由多个部分组成。

在您的情况下,您将定义一个部分来呈现评论。当从头开始显示页面时,服务器端代码循环遍历现有评论并调用部分内容来逐个呈现它们。当新评论添加到现有页面时,JavaScript 会要求服务器呈现该新评论的部分内容并将其作为 Ajax 响应返回,然后将其附加到页面上的现有评论。