我怀疑: - 是否有任何标准/惯例,我何时应该使用“Smarty模板”?什么时候应该使用Javascript Ajax调用来生成内容?我可以使用Ajax / Javascript调用来动态生成内容。

我的应用程序使用Ajax和 Smarty ,但我想为开发人员设置规则

有帮助吗?

解决方案

您应仅使用AJAX调用来加载页面加载时未知的动态数据。例如,当您点击“评论”时在Stack Overflow上链接给定的问题/答案,进行AJAX调用以动态加载数据。这是用户单击评论链接的结果,而不是页面加载的结果。您不知道在页面加载时应该显示这些注释,因此在这种情况下进行AJAX调用是合适的。

您应该使用模板显示加载页面时已知的任何数据。它可以更轻松地处理禁用Javascript的人(我知道,不是很多),它提供了逻辑与表示的明确分离。使用模板的另一个重要好处是可以显着减少从客户端浏览器发出的HTTP请求数。

这在移动浏览领域尤为重要,因为延迟而非带宽是您最大的障碍。例如,在移动版Safari中,对Smarty-templated页面的单个HTTP请求的加载速度明显快于加载Javascript模板化页面的请求,这会产生五到六个额外的HTTP请求。使用EDGE,3G和其他非wifi移动数据服务时尤其如此。事实上,这是非常重要的,它是雅虎的第一个指南 加速网站的最佳实践

理想情况下,您应该在禁用Javascript时正常降级功能。一个很好的例子是自动完成搜索框。在您键入时神奇地显示建议的搜索字词真的很酷,但如果您关闭Javascript,您仍然有一个功能搜索框。这是服务质量下降的典型例子。 Stack Overflow通常可以提供稳定的非Javascript体验。它缺少的一个地方是评论。禁用Javascript时,仅显示最常用的注释,并且禁用发布新注释。

除非绝对必要,否则您应该将Javascript视为可能未启用的奖励功能,而不是应该用于构建网站关键部分的内容。显然存在异常(如果没有Javascript,有些事情就无法完成)。例如,您会注意到,在关闭Javascript时,Stack Overflow非常有用。发布新答案时,您将无法获得实时更新,也无法获得真实的Markdown预览,但核心功能仍然存在。所有的“重物”都是“重物”。用HTML和CSS完成。 Javascript只是锦上添花(肯定是非常好的结冰)。这是一个侧面说明,但重要的是要提及。

其他提示

这可能取决于您在模板中执行的工作类型。就个人而言,我讨厌在Javascript中严格执行大量繁重的样式/布局。如果您可以通过加载大部分布局。 Smarty只是更改特定的数据位(只有数据,而不是标记/样式,如果可能的话),这可能是开始在您自己的开发团队中进行标准化的好地方。

在原始页面加载(不使用刷新)之后,将模板用于服务器端生成和DHTML / AJAX。即使这样,AJAX调用本身的服务器响应也可以使用模板进行组合,这可能最适合任何非平凡的内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top