1.7 JavaScript编程目标
开始一次新的尝试时,不管是第一次学习JavaScript还是为了学习更好、更现代的JavaScript技术,都应该设定一些目标。网站的目的当然是为了让客户(使用Web浏览器的最终用户)查看和使用。如果访问者无法使用一个网站,你作为Web开发人员的工作就失败了。朝着这个目标,网站的功能应该在所有浏览器上都能实现,包括移动设备上的浏览器、非可视化浏览器、禁用JavaScript的浏览器和旧的浏览器。完成这一目标比你想象的更容易,这要归功于渐进增强(progressive enhancement)方法。
渐进增强指的是创建可靠的基本功能,然后在支持增强功能的浏览器上改进的过程。例如,处理表单提交的标准方法是将表单数据发送给服务器端资源(参见图1.3)。前面已经讨论过,JavaScript能够使用Ajax完成相同的功能(参见图1.5)。渐进增强意味着你应该首先实现标准的方法,然后在可能的时候拦截这一方法。本书从下一章开始将不断地阐述渐进增强的实施。
这并不是说不能合理地排除一些用户。例如,在老式浏览器上HTML5的奇妙功能不可能正确地表现,iOS设备(iPod、iPad和iPhone)不支持Flash。如果一个网站绝对需要Flash,就必须意识到,有许多人将被排除在外。但是对于大部分网站来说,目标应该是支持尽可能多的浏览器。
一个网站不但应该在任何浏览器上都能工作,而且不应该试图破坏浏览器的常规表现。多年来,JavaScript程序员曾经阻止用户单击“返回”按钮、使用浏览器历史、访问上下文菜单等。对于大部分情况来说,JavaScript应该改进用户体验,而不是彻底改变它。没有什么正当的理由让浏览器以不同于用户所习惯的方式工作。(至少,如果你的网站依赖于禁用常见的浏览器行为,当一位没有JavaScript的用户访问时你就会遇到麻烦。)
其次,为了使代码更容易维护,你应该采用无干扰(unobtrusive)JavaScript技术。这一术语指的是将JavaScript代码与HTML页面分离,第2章将从这种技术对实际代码的影响开始讨论。
最后,现代的JavaScript编程应该适合于整个Web的当前状态。可以将它看作一个模范公民或者好的父母:展现应有的质量。这不只适用于JavaScript,也适用于HTML和CSS。第2章将确立这一目标的某些特性,例如采用语义HTML。
这些是现代JavaScript编程的目标。本书的目标是在实际代码中正确地实现这些目标,同时将JavaScript当作一种语言来教。