核心观点 - 尽管现代网络开发工具和技术栈日益先进,但许多基础开发实践对于保障网站和应用的性能、安全、可访问性和韧性仍然至关重要,不应被忽视 [2][3] 代码质量与测试 - 由人类主导的代码测试至关重要,因为AI和框架生成的代码及其测试可能共享相同的盲点,人类需要决定测试内容和寻找棘手的边界情况 [4] - 运行时可观察性(如错误边界和检测)是团队容易忽视的实践,它能在用户报告前暴露问题,日志通常只记录崩溃而非用户体验,随着框架层数增加这一差距的代价会更大 [8] 系统架构与性能 - 架构简洁性依然重要,现代框架易导致系统因过度抽象而变得脆弱、不透明且难以调试,强大的工程团队应优先考虑清晰性、可预测的故障模式和最少的依赖链 [9] - 智能缓存策略比许多团队意识到的更重要,不当的缓存会悄无声息地增加延迟、云成本、电池使用量和后端负载,明智的缓存头、CDN使用和受控失效是区分响应式系统与昂贵系统的关键 [7] - 渐进增强与强大的HTML和答案引擎优化被低估,即使使用大量JavaScript,语义标记也能确保可访问性、SEO相关性,并为AI和搜索引擎提供答案就绪的内容 [11] - 服务器端渲染对于速度、SEO和可访问性等基础要素依然重要,不应被遗忘,开发者应为最差的设备优化,而非自己的开发机器 [18] 前端开发与用户体验 - 清晰的错误状态设计常被团队忽略,当关键流程依赖JavaScript时,一个失败的API调用或脚本被阻止就可能向用户显示空白页面,为每种故障模式设计明确的回退方案至关重要 [6] - 通过手动提示标签进行战略资源优先级排序常被忽视,过度依赖编译器猜测关键资源会导致布局偏移和交互延迟,通过预加载和预连接明确管理资源加载顺序对用户留存至关重要 [6] - 性能预算仍然重要,现代框架易使页面静默膨胀至数兆字节,团队假设快速设备和5G网络可以吸收,但现实中端手机和弱网络用户会离开,为捆绑包大小、请求和核心网络指标设置并执行预算至关重要 [12] - 前端错误预算很重要,团队将正常运行时间视为后端问题,前端对脚本失败、渲染缓慢或第三方标签损坏没有容错阈值,这会导致静默退化,应为客户端故障设置明确的预算并发出警报 [13] - 页面重量是团队持续忽视的性能指标,假设现代网络和CDN会补偿臃肿的JavaScript包和未优化的资源是错误的,对于移动或连接受限的用户,每增加一个千字节都会导致加载时间变长、用户体验迟滞,最终失去用户参与度 [13] - 性能优先的开发不应被抛弃,应在增加复杂性之前先优化性能,现代框架可能加速开发,但过多的脚本和层通常会降低速度、可访问性和可靠性 [17] 安全与韧性 - 优雅故障规划至关重要,现代应用依赖无数API、脚本和集成,每增加一层都会增加脆弱性,强大的团队应确保即使脚本故障、网络变慢或外部服务中断,核心用户流程也能工作 [5] - 子资源完整性很重要,当团队从CDN拉取脚本时,他们信任提供商并跳过证明文件未更改的哈希值,从安全角度看,这通常是受信任的第三方脚本成为漏洞的途径,SRI哈希可以在代码未经批准时阻止加载 [16] - 核心安全基础比许多团队意识到的更重要,即使使用现代框架,网站仍需要安全的登录方法、强大的访问控制、输入检查和定期的依赖项更新,黑客通常利用简单的漏洞,而不仅仅是高级缺陷 [12] 基础技术与可访问性 - 理解底层技术仍然重要,太多团队依赖分层抽象、框架和AI生成的代码,却不理解底层实际发生的情况,当性能下降、安全失效或集成中断时,问题通常隐藏在抽象层之下 [8] - 语义HTML是必不可少的实践,现代框架诱使开发者将所有内容包裹在通用的
Web Development Fundamentals Modern Teams Still Need
标签中,但这会产生问题,因为像