我想用“优雅降级”构建网页。即,即使JavaScript被禁用,网页也能正常工作。现在我必须对 AJAX 响应的格式做出设计决策。
如果禁用 javascript,则对服务器的每个 HTTP 请求都会生成 HTML 作为响应。浏览器将刷新并显示返回的 HTML。没关系。
如果启用了 javascript,每个对服务器的 AJAX HTTP 请求都会生成……好吧,JSON 或 HTML。
如果是HTML的话,很容易实现。只需使用 javascript 将部分页面替换为返回的 HTML 即可。而且,在服务器端,不需要太多代码更改。
如果它是 JSON,那么我必须再次在 javascript 中实现 JSON-to-html 逻辑,这几乎是服务器端逻辑的重复。重复是邪恶的。我真的不喜欢它。好处是带宽利用率比HTML好,带来更好的性能。
那么,优雅降级的最佳解决方案是什么? AJAX 请求返回 JSON 还是 HTML 更好?
我不认为有一个“最佳解决方案”any给定的情况。也许只是针对特定问题的“适当解决方案”。这实际上取决于您想要做什么。优雅降级对我来说意味着:
- 构建一个“足够好”的界面,可在尽可能多的浏览器(桌面和移动设备)上运行。
- 不显眼地添加一些脚本(验证方法、界面元素,例如选项卡和滑块等),这些脚本只有在页面加载的浏览器具有使其工作所需的功能时才会出现。
在服务器响应中使用 HTML 还是 JSON 是非常主观的,我经常发现自己很难在它们之间进行选择。有人可能会争辩,例如,从服务器接收一堆键值对并将它们渲染到现有的选择元素中意味着莫尔斯电码因此,编码时间会增加,潜在的错误也会增加。相反,您可以简单地从服务器请求预先构建的选择元素,并将其注入到容器中。构建元素的逻辑已经驻留在服务器上,为什么要使用两种不同的语言构建两次。
另一个观点是 JSON 最大限度地减少了带宽使用,因此值得付出额外的努力来解析一些 JSON 以在客户端上构建一些标记。我发现很容易不同意这种观点,有几个原因(我是not概括地说,不要误会我的意思)。首先,许多网络服务器被配置为压缩/压缩/gzip 其输出,并且许多浏览器接受压缩内容。标记是极其可压缩,因为它包含大量冗余(<strong></strong>
)。因此,可以合理地认为 JSON 响应的大小不会明显小于带标记的响应。其次,大型数据集可能意味着客户端需要相当长的执行时间(令人讨厌的嵌套循环很常见 - 在此处出现的一些问题中很明显)。
我给您的建议是尝试了解每种方法的优点和缺点,并利用这些信息。您可能想阅读以下内容:
http://www.quirksmode.org/blog/archives/2005/12/the_ajax_respon.html http://www.quirksmode.org/blog/archives/2005/12/the_ajax_respon.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)