哪种做法更好?从 Jquery Response 获取 HTML


Which is better practice? Getting HTML from Jquery Response

这只是一个问题,以了解人们做什么以及如何这样做,但是

假设用户向列表中添加了某些内容,完成后,它将运行下面的 ajax 并更新.user-stream-list

$.ajax({
    url: "user-stream-list.php",
    success: function(data){
        $(".user-stream-list").html(data);
    }
});

user-stream-list.php响应例如是

<li class='feed'><a href='http://www.theverge.com/rss/index.xml' data-fid='13' data-uid='15'><img class='favicon' src='https://www.google.com/s2/favicons?domain=www.theverge.com'><span class='title'>The Verge -  All Posts</span><span class='options'><span class='addcat' data-fid='13'>+</span><span class='delete'>×</span></span></a></li>

这在 Web 开发中可以接受吗?还是我真的应该将其作为json传递,然后将其排序为 html?

做对你的特定问题有用的事情。 好的设计在权衡之间找到折衷。 如果你的截止日期很紧,你需要一些有用的东西,并且从PHP返回HTML更容易,那就去做吧。

也就是说,您是在服务器上以编程方式生成 HTML。 如果您传递 JSON,您将拥有相同的作业,区别在于客户端生成 HTML。 这对您来说要灵活得多,因为您可以在不同的上下文中生成不同的 HTML。 甚至根本不是 HTML。

设计为返回灵活的数据结构通过提供重用来松散地耦合应用程序组件:数据结构与调用方的环境和目标表示无关。 这种灵活性将随着应用程序的增长而很好地服务于您的应用程序,而且 - 在我看来 - 尽早设计这样一个 API 的努力是值得的。

我同意Bishop的回答,我认为这取决于您系统的架构设计。例如,如果您想使用 js 模板系统,创建一个移动设备系统,将您的数据提供给其他系统或与您的后端通信的其他系统,那么最好从您的服务器提供 json。但是,即使您选择使用 php 准备 HTML 服务器端(正如此线程中提到的其他人所指出的那样,这是非常常见和可接受的),最好将创建数据的实体和创建 html 代码/模板的实体分开,以便灵活并在未来两全其美。

如果我理解正确,您担心是否应该从服务器传递完整的HTML代码或仅传递数据。嗯,这两种方法都很好。这完全取决于您的需求和实施情况。

例如,您可能希望向列表中的某些项目添加一些内联样式。您可以在服务器端生成它,这将更容易并发送整个HTML代码。您可能还需要添加一些微数据。没有必要将每个部分作为 JSON 单独传递。

另一方面,您可能已经预制了HTML代码,并且只想将数据插入其中。在这种情况下,传递整个标签将浪费带宽。

您还需要考虑其他因素,例如:在服务器端还是客户端编译数据会更快,我是否需要节省带宽,或者我可以允许自己发送任意长的消息?

一般来说,尝试避免两件事:发送大块数据和两次执行相同的工作。

这个问题的答案可能很广泛,并且非常基于意见,但是我会给我2美分。

由于您将问题标记为PHP,因此我假设您的应用程序主要基于服务器端代码的PHP。由于您的所有视图都将由 PHP 生成,因此我会将所有模板保留在 PHP 方面。为什么?可维护性和清晰度。必须追逐不同的视图生成来源既耗时又具有误导性。恕我直言,最好将所有逻辑保留在一端/语言上,并且客户端JavaScript之类的东西应该用于服务器端语言无法执行的操作(AJAX,转换等)。

这种方法将允许更智能的(IMO)视图生成,它也非常清晰,并且可以轻松更改模板/视图(请记住,您应该在编写代码时考虑到其他人)。