哪个应该生成HTML:JavaScript还是php?

哪个应该生成HTML:JavaScript还是php?,javascript,php,html,code-generation,tablelayout,Javascript,Php,Html,Code Generation,Tablelayout,快速提问,寻找一些建议。我有一个网站,它将从数据库中请求数据,并在一个表中显示给用户。我正在使用jQuery(AJAX)、php和MySQL 为表生成HTML以显示数据的最佳位置在哪里:是php生成HTML并从服务器发送整个内容(HTML+数据),还是php只是发送回数据,jQuery代码生成表并插入数据 虽然这是在内部网上运行的,但我仍然希望使用最快的方法 更新: 我想为这个主题添加一些额外的信息,以防对其他人有用。我完全同意这里提出的分离思想,并将其作为我的设计方法。我使用PHP检索所需数据

快速提问,寻找一些建议。我有一个网站,它将从数据库中请求数据,并在一个表中显示给用户。我正在使用jQuery(AJAX)、php和MySQL

为表生成HTML以显示数据的最佳位置在哪里:是php生成HTML并从服务器发送整个内容(HTML+数据),还是php只是发送回数据,jQuery代码生成表并插入数据

虽然这是在内部网上运行的,但我仍然希望使用最快的方法

更新:

我想为这个主题添加一些额外的信息,以防对其他人有用。我完全同意这里提出的分离思想,并将其作为我的设计方法。我使用PHP检索所需数据并将其组织成JSON,然后使用jQuery生成HTML以显示返回的信息。在本例中,我使用jQuery创建了一个电子表格样式的表格,并填充了包含PHP返回值的“单元格”。通过几行和几列,一切正常,但正如我所说的,一个16 x 16的表,使用jQuery动态创建输入元素

在这一点上,我再次遇到了丑陋的幽灵,即IE6

IE6仍然是我工作的认可浏览器,所以我的应用程序必须在上面运行。当我在Firefox和Opera上测试我的设计时,界面加载速度很快,使用起来很愉快。当我在IE6中运行相同的代码时,生成接口的时间太长;足够长的时间,我的用户会再次开始点击东西,认为应用程序没有响应。我只能把这归功于IE6中的JavaScript引擎,因为代码在较新的浏览器中运行良好。因此,正因为如此,我重新设计了部分接口,让PHP至少生成内部表表单元素,填充数据,然后将其发送回客户端。它打破了我想要的良好分离,但在IE6中,我看不到任何其他方法来加快客户端的速度


无论如何,我想其他人可能会对这里的结果感兴趣,而对于像我这样的初学者来说,浏览器支持需求会对设计选择产生多大的影响。

内联网带宽不是瓶颈,旧的笨重IE JS引擎可能是,所以我要说发送生成的HTML(即使在更好的浏览器中,HTML片段的本机解析也应该比使用JS构建DOM更快)。

一个好的策略是使用“关注点分离”方法,即使用客户端使GUI方面的事情变得漂亮


还要注意的是,这一战略与互联网上的当前趋势相吻合,例如谷歌网络工具包(GWT)大多数人会说AJAX应该是纯数据,没有html标记。我不同意这一点,我发现AJAX擅长将html装入屏幕中的各个位置。我认为从编码的角度来看,使用服务器端技术生成html更容易,然后让javascript将其放到需要的页面上它会很好地工作,而且会很有效(innerHTML是将新html放入页面的最有效的方式),并且代码维护会更容易。如果让javascript生成html,那么您就需要担心显示是否有任何变化,而不仅仅是PHP。就网络带宽而言,最快的速度是使用PHP输出JSON,并使用jQuery创建标记


客户端处理速度最快(可以说是实现速度最快)正在使用PHP生成标记(例如使用模板)并通过Ajax传递。

如果您可以在将页面返回给用户之前获取数据并生成表,请使用PHP完成所有操作。如果您没有从中获得任何好处,则无需添加Ajax flash


如果用户要从服务器过滤/请求多个数据更新…我会通过PHP将数据以JSON格式返回到Javascript,并让Javascript将HTML呈现到页面上。

如果您要使用绝对最快的方法:使用PHP呈现HTML服务器端。如果您想要更易于维护、更干净的代码,请ch:让PHP将JSON发送到AJAX代码。这样,您可以保持数据与表示和行为的良好分离。如果您可以从同一个位置(在客户端)控制HTML的呈现,那么更改站点的外观和操作将更容易。

我在其他答案中没有看到的一点: 一致性: 当看到呈现的页面时,他希望能够将该页面保存为静态html-- (虽然taht现在在“Web2.0时代”的表现不那么好),但在一切平等的情况下,
用户应该能够将他看到的内容保存为静态页面:因此,您应该将其从服务器发送到预先呈现为html的页面。

我会在服务器端创建html,并使用JavaScript对html进行一些小的改进。您无法创建对所有浏览器都有效的html页面,并且从服务器端检测它不是100%确定;您不能信任用户代理ID,因为许多浏览器都允许用户选择其他浏览器,为一系列浏览器创建特定于HTML的唯一方法是验证是否实现了所使用的属性


我的报告一般都是有效的;在具体的情况下,它是不成立的。

我同意分离为未来,+1i也喜欢分离思想,这就是为什么我最初倾向于在JS中制作表,GUI,我想还有更多的事情要考虑,但我仍然喜欢你的概念概念。ke能够将工作分派给不同的团队成员,更容易维护等。我认为所有这些答案都非常好。谢谢大家。我支持这里的民意投票。我投票选出了我认为有用的其他人。混蛋