2

这只是一个关于找出人们做什么和如何做的问题,但是

假设用户将某些内容添加到列表中,完成后,它会运行下面的 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 开发中可以接受吗?或者我真的应该通过 asjson并将其排序为 html 吗?

4

4 回答 4

7

做对您的特定问题有效的事情。好的设计在权衡之间找到折衷。如果你的期限很紧,你需要一些可行的东西,并且从 PHP 中返回 HTML 更容易做到这一点。

也就是说,您正在服务器上以编程方式生成 HTML。如果你传递 JSON,你有同样的工作,不同之处在于客户端生成 HTML。这对您来说更加灵活,因为您可以在不同的上下文中生成不同的 HTML。甚至根本没有 HTML。

设计返回一个灵活的数据结构通过提供重用来松散地耦合您的应用程序组件:数据结构对调用者的环境和目标表示保持不可知。随着应用程序的发展,这种灵活性将为您的应用程序提供良好的服务,而且 - 在我看来 - 尽早设计这样一个 API 的努力是值得的。

于 2013-10-26T15:16:26.123 回答
2

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

于 2013-10-26T15:27:23.373 回答
0

如果我理解正确,您会担心是应该从服务器传递完整的 HTML 代码还是只传递数据。两种方法都很好。这一切都取决于您的需求和实施。

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

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

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

一般来说,尽量避免两件事:发送大量数据并两次执行相同的工作。

于 2013-10-26T15:18:32.850 回答
0

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

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

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

于 2013-10-26T15:21:06.417 回答