我在这里阅读了这篇文章,其中谈到了javascript的渐进增强,作者提到:
首先,建立一个老式的网站使用超链接和表单传递信息发送到服务器。服务器返回所有新页面要求
现在,使用JavaScript拦截这些链接并提交表单通过改为XMLHttpRequest。那你就可以了选择页面的哪些部分需要被更新,而不是更新整页。
我有点好奇,这是否意味着在服务器端返回html标记,而不是json,后者通常意味着在客户端构建标记?这种方法有缺点吗?
此外,我注意到,当我禁用Javascript(不能发布更新等)时,应用程序,例如Facebook,看起来非常瘫痪。这是否意味着它不能正确处理优雅的降级?
渐进增强是否意味着没有ajax的json?
不,这肯定不是的意思。如果禁用JavaScript,就没有XMLHttpRequest
,因此就没有ajax。
现在,使用JavaScript拦截这些链接并形成提交,然后通过XMLHttpRequest传递信息。
拦截链接和表单提交的JavaScript位可以自由更改请求的位置、URL参数等,这意味着最大化的URL不必与无JavaScript的URL相同。例如:
<a href="/some/page.html">linky</a>
可以被拦截并转换为XMLHttpRequest,该XMLHttpRequest实际上是发送给的
/some/page.json
,或/some/page.html?ajax=1
,或/bibbidi/bobbidi/boo
(尽管重要)
渐进式增强意味着您可以用随处可用的代码启动页面,然后逐步添加用户浏览器接受的功能。这方面的一个很好的例子是使用锚的ajax类型功能。当页面加载时,您可以在hrefs中使用url,这样蜘蛛和非javascript浏览器仍然可以获取内容。但是您也添加了一个onclick来进行ajax加载。这样,启用和禁用的客户端都可以获得最佳行为。
从本质上讲,渐进式增强意味着你首先要优先考虑建立一个完全可用的"无Javascript"网站,然后通过添加Javascript功能和AJAX来慢慢增强你的网站,同时保持"无Javascript"功能的工作。
这只是为了让那些禁用Javascript的人能够正常访问和使用该网站。