本文档详细介绍了前端清单中的 JavaScript 部分,重点关注 Web 项目中 JavaScript 实现的最佳实践和测试方法。它涵盖了代码组织、优化技术、加载策略、安全注意事项以及前端开发中 JavaScript 的质量保证方法。
有关 JavaScript 之外的整体性能优化信息,请参阅性能优化。有关具体安全措施,请参阅安全措施。
JavaScript 部分确保 JavaScript 代码遵循性能、安全和可维护性的行业最佳实践。这有助于创建加载速度快、执行效率高、并在不同浏览器和设备上提供良好用户体验的 Web 应用程序。
JavaScript 部分遵循前端清单的优先级系统,按重要性对条目进行分类
| 优先级 | 指示符 | 含义 | JavaScript 示例 |
|---|---|---|---|
| 高 | 不可省略 | 无内联 JavaScript、无合并、无压缩、无安全指南、无 ESLint 验证 | |
| 中等 | 强烈推荐 | Noscript 标签、非阻塞加载、优化库 | |
| 低 | 推荐但可选 | Modernizr 用于功能检测 |
来源:README.md35-39 README.md508-556
优先级:高
JavaScript 代码永远不应与 HTML 代码混合。这种分离提高了可维护性、缓存能力和安全性。
优先级:高
应将多个 JavaScript 文件合并为一个文件(除非使用 HTTP/2,此时多个较小的文件可能更有效)。这可以减少 HTTP 请求,提高加载性能。
优先级:高
JavaScript 文件应进行压缩以减小文件大小。这包括在不改变功能的情况下删除不必要的字符(如空格、注释等)。约定是在压缩后的文件名后添加 .min 后缀。
示例:script.js → script.min.js
优先级:中
应使用 async 属性异步加载 JavaScript 文件,或使用 defer 属性推迟加载,以避免渲染阻塞。
async:脚本异步执行,一旦可用即执行,不会阻塞页面渲染。defer:脚本执行被推迟,直到页面解析完成。示例
优先级:中
当 JavaScript 不可用或被禁用时,应使用 <noscript> 标签提供替代内容。这对于 JavaScript 密集型应用程序尤其重要。
示例
优先级:中
JavaScript 库应
对于简单功能,考虑使用原生 JavaScript,而不是导入整个库。
优先级:低
为了定位特定功能,请使用自定义的 Modernizr 构建,将类添加到 HTML 标签。这有助于功能检测和提供适当的回退。
优先级:高
JavaScript 代码应遵循安全最佳实践,以防止漏洞,特别是
应遵循 OWASP 关于使用 JavaScript 开发安全应用程序的指南。
优先级:高
所有 JavaScript 代码都应使用 ESLint 进行检查,并且根据您选择的配置或标准规则不应报告任何错误。
ESLint 有助于识别和修复 JavaScript 代码中的问题,强制执行代码质量和项目一致性。
JavaScript 应增强用户体验,同时不造成可访问性障碍。
JavaScript 通过以下方式直接影响性能:
有关全面的性能优化技术,请参阅性能优化部分。
来源:README.md508-556 README.md620-699 README.md701-756
| 类别 | 检查 | 优先级 |
|---|---|---|
| 代码组织 | 无混合 HTML 的内联 JavaScript | 高 |
| 优化 | JavaScript 文件已合并 | 高 |
| 优化 | JavaScript 文件已压缩(带 .min 后缀) | 高 |
| 安全 | JavaScript 符合 OWASP 安全指南 | 高 |
| 加载 | 已使用 <noscript> 标签提供回退内容 | 中等 |
| 加载 | JavaScript 文件使用 async/defer 加载 | 中等 |
| 库 | 库是必需的、更新的且已优化 | 中等 |
| 功能检测 | Modernizr 用于特定的功能检测 | 低 |
| 测试 | ESLint 未标记任何错误 | 高 |
此清单有助于确保 JavaScript 代码得到优化、安全,并遵循前端开发的最佳实践。