本文基于《JavaScript DOM 编程艺术》第2版,梳理Web开发中的核心最佳实践。重点探讨如何平衡交互体验与网站可用性,确保JavaScript禁用时的平稳退化。同时深入分析DOM访问、脚本合并、位置放置及压缩等性能优化手段,旨在提升页面加载速度与用户体验。
JavaScript使用原则与平稳退化
1、防止滥用JavaScript:在通过JavaScript修改网页行为之前,务必审慎评估。核心原则是确认增加额外交互行为是否确有必要,避免过度设计。
在当前JavaScript广泛应用于Web页面交互的时代,这句话应理解为适度使用。开发者需警惕因追求炫酷特效导致网页加载缓慢或兼容性差,从而舍本逐末,影响用户正常浏览和使用网站。
2、平稳退化:指当用户禁用浏览器JavaScript或浏览器不支持JavaScript时,网站仍应保持正常浏览功能。
起初认为这种情况可忽略,但通过查阅知乎讨论及博文《javascript不可用的问题探究》,并对博客园首页进行实验(禁用JavaScript后浏览),发现虽无法评论、分类效果显示异常且广告消失,但查看博文、分页跳转等主要功能仍可正常使用。
结论是:在考虑平稳退化时,至少需保证网站主要功能可用。以博客园为例,核心功能即为查看博客内容。
3、禁用"javascript:"伪协议和内嵌事件处理函数:尽管在HTML中使用这两种写法不会直接导致严重错误,但会破坏平稳退化(导致网页行为不一致),并使脚本编写混乱,增加代码维护难度。
Web性能优化策略
4、性能考虑:关于性能的最佳实践相对直观且易于理解。
"尽量少访问DOM和尽量减少标记"。减少DOM访问是因为查询操作耗时较高,应将多处函数中的重复DOM查询重构为全局变量或作为参数传递。减少标记可缩小DOM规模,从而缩短在DOM树中查找特定元素的时间。
"合并脚本":合并外部脚本文件可减少页面加载时的请求次数。通过Chrome开发者工具Network标签观察博客加载情况(见
),第三方百度分享插件加载最慢,但整体时间可接受。若引用文件过多过大或依赖插件请求缓慢,页面将长时间处于加载状态,导致体验下降。此外,"脚本在标记中的位置对页面的初次加载时间也有很大的影响"。如Bootstrap实例所示,JS插件置于页面尾部(见
)。根据HTTP规范,浏览器从同一域名最多同时下载两个文件,脚本下载期间不下载其他文件(含不同域名),所有资源需等待脚本加载完毕。通常将脚本放在块中会导致浏览器无法并行加载其他文件(如图片)。将所有<script>标签置于文档末尾(</body>之前),可加速页面加载,因为此时window对象的load事件仍可执行文档操作。最后建议压缩脚本,通常以.min.js为后缀。