【问题标题】:Smarty Vs. Javascript/AJAX聪明的VS。 Javascript/AJAX
【发布时间】:2009-01-06 07:10:07
【问题描述】:

我有一个疑问:- 是否有任何标准/约定我应该何时使用“Smarty 模板”以及何时应该使用 Javascript Ajax 调用来生成内容?我可以使用 Ajax/Javascript 调用来动态生成内容。

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

【问题讨论】:

    标签: php javascript ajax smarty


    【解决方案1】:

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

    您应该使用模板来显示页面加载时已知的所有数据。它使处理禁用 Javascript 的人变得更容易(我知道,不是很多),并且它提供了逻辑与表示的清晰分离。使用模板的另一个重要好处是可以显着减少从客户端浏览器发出的 HTTP 请求的数量。

    这在移动浏览世界中尤为重要,因为延迟而非带宽是您的最大障碍。例如,在移动版 Safari 中,对 Smarty 模板页面的单个 HTTP 请求的加载速度将明显快于加载 Javascript 模板页面的请求,后者会发出五到六个额外的 HTTP 请求。在使用 EDGE、3G 和其他非 wifi 移动数据服务时尤其如此。事实上,这非常重要,以至于它是 Yahoo 的 Best Practices for Speeding Up Your Website 中的第一条准则。

    理想情况下,您还应该在禁用 Javascript 时优雅地降低功能。一个很好的例子是自动完成的搜索框。建议的搜索词在您键入时神奇地出现真的很酷,但是如果您关闭 Javascript,您仍然有一个功能搜索框。这是服务质量下降的典型例子。 Stack Overflow 通常在提供可靠的非 JavaScript 体验方面做得很好。它的不足之处之一是在 cmets。禁用 Javascript 时,仅显示最流行的 cmets,并禁用发布新 cmets。

    除非绝对必要,您应该将 Javascript 视为可能无法启用的附加功能,而不是应该用于构建您网站的关键部分的东西。显然有例外(有些事情没有 Javascript 就无法完成)。例如,您会注意到 Stack Overflow 在关闭 Javascript 时非常有用。当发布新答案或花哨的实时 Markdown 预览时,您不会获得实时更新,但核心功能仍然存在。所有“繁重的工作”都是通过 HTML 和 CSS 完成的。 Javascript 只是锦上添花(诚然是非常好的锦上添花)。这是一种旁注,但很重要,值得一提。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我喜欢在 Javascript 中加载模板 sn-ps。我不确定这是否是最佳做法?也许这是我应该问自己的一个问题......
        • 如果你将一个处理过的sn-p插入到dom中,我认为不会有太多出错的方法。不过,在整个 dom 上进行微小的更改是另一回事。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-15
        • 2011-11-24
        • 2010-10-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多