Php 我的html标记应该在客户端生成吗?
我有一些服务器端代码,它输出一个项目的Php 我的html标记应该在客户端生成吗?,php,javascript,jquery,performance,Php,Javascript,Jquery,Performance,我有一些服务器端代码,它输出一个项目的,用户可以编辑这些项目并将更改发布回服务器。我现在正在开发一个“添加新”功能,它向添加一个新项目,并在单击“保存更改”按钮时将其发回服务器 当用户单击“添加新”按钮时,我执行附加标记的客户端代码(与我的服务器端代码生成的标记相同) 让我烦恼的是裁员。这意味着,如果我要更改标记,我必须同时打开php和js文件才能进行更改 为了消除冗余,我是否应该只从服务器输出数据,让客户端代码生成标记?像这样的概念对性能的影响是什么?理论上,您可以毫无问题地添加新的。但是,对
,用户可以编辑这些项目并将更改发布回服务器。我现在正在开发一个“添加新”功能,它向
添加一个新项目,并在单击“保存更改”按钮时将其发回服务器
当用户单击“添加新”按钮时,我执行附加
标记的客户端代码(与我的服务器端代码生成的标记相同)
让我烦恼的是裁员。这意味着,如果我要更改
标记,我必须同时打开php和js文件才能进行更改
为了消除冗余,我是否应该只从服务器输出
数据,让客户端代码生成标记?像这样的概念对性能的影响是什么?理论上,您可以毫无问题地添加新的
。但是,对于大多数使用,您会希望服务器保存主副本,从而为每个更新重新提供整个
如果您使用的是
.ajax()
,这将是一个几乎无法测量的加载时间差异。让我建议第三种方法:复制现有元素,并根据需要更改其属性和/或内容
jQuery有.clone()
,但也可以使用普通DOM或任何其他库来完成
这样,您就不会增加不必要的延迟,并且可以使客户端代码相对独立于您可能必须进行的任何标记更改。这意味着,如果您添加或更改任何与JS需要执行的操作无关的标记(例如添加
class=”“
或内部
),并且您的JS具有足够的通用性(例如获取要克隆的元素以及要从属性编辑其文本的元素)然后您就不需要更新它了。您可以使用JQuery.clone()
方法进行混合
您的后端代码在创建初始代码时可以生成元素的结构,然后,如果用户想要添加新的,您可以抓住现有的元素作为模板,.clone()
它,使用来自用户的新数据更新克隆的值,然后将其附加到
中
唯一的问题是页面加载中可能没有任何
元素,因此.clone()
调用将没有任何可引用的内容。但是,如果这是一个问题,有一些方法可以解决(例如,您想要使用的
格式的JS字符串模板,可以这样使用:var newLI=$(liTemplateString)
。同样,此模板可以由后端上的相同代码创建,该代码将在页面加载时创建实际的
元素……它也将创建一个JS变量
除此之外,这将允许您立即将
更新到页面,然后使用Ajax将更新发送到后端,以更新“主”版本,而无需用户等待该过程
最后,我个人的偏好是让后端尽可能多地进行处理,只有您的客户端代码来处理后端无法完成的事情,因此如果后端在创建页面时能够完成,我会避免转储数据,让前端处理创建列表。我喜欢这个答案!哟你提出了一个关于可能的空列表的重要观点。模板字符串非常适合这种情况。非常感谢!LOL…没问题。很乐意帮忙。:)