《Reckoning: Part 1 — The Landscape》 是一个四部分系列的第一部分,探讨了以 JavaScript 为先导的前端文化如何破坏了美国的公共服务。作者在 2011 年移居伦敦,参与了 Google 为 Android 开发的首个 “真正” 浏览器。当时,Android 系统默认浏览器基于系统 WebView,更新速度受限于设备更换的缓慢节奏。随着移动设备逐渐成为主导形态,浏览器开发者迅速适应了这一变化,并在 2014 年取得了足够的进展,开始考虑如何让网络参与到移动设备的应用模型中,最终在 2015 年推出了 PWA 和推送通知。
然而,在这一新平台上工作的开发人员中,出现了一些令人不安的模式。许多开发人员将缓慢的、面向桌面的 JavaScript 框架带入移动网络,这些现代的、以移动为先的项目既不需要也无法承担额外的框架膨胀。到了 2016 年,前端实践已经完全陷入了一厢情愿的思考,尽管警报已经拉响,但没有任何改变。
2016 年之后,低端市场的爆炸性增长已成为既定事实。数亿低收入的翻盖手机用户开始升级换代。不同品牌不断复制 2016 年的中档 Android 手机,以各种名称推出,唯一的恒定因素是中等规格和不断降低的价格。这使得网络与应用作为主导平台之间的竞争真正开始。
但低端革命在网络开发圈几乎未被注意到。前端开发者以与桌面相同的速度向移动网络注入 JavaScript,破坏了预算有限用户的良好体验希望。从 2014 年到 2022 年,中位数设备规格基本停滞不前。与此同时,网络开发者确保了 “iPhone” 中的 “i” 代表了 “不平等”。
高端手机的价格加速上涨,但平均售价仍停留在 300 到 350 美元之间。低端市场的爆炸性增长是唯一阻止平均售价上升的因素。为了保持 325 美元的平均售价,每售出一部 1000 美元的 iPhone,就需要售出三部 100 美元的低端手机,而这正是发生的情况。
尽管如此,以 JavaScript 为先导、以框架为中心的教条仍在继续,无论它与新现实多么不兼容。可以预见的是,那些承诺提供 “类似应用体验” 的工具并没有做到。数十亿部廉价手机总是拥有最新的浏览器,却发现它们的 CPU 和网络被设计用来解决它们没有的平台缺陷的膨胀脚本所堵塞。
2019 年,Code for America 发布了首个国家级在线福利项目访问调查,这些项目由每个州构建和运营。2023 年的后续研究提供了有关数字福利服务传播的重要新数据。CFA 2019 年研究的一个有价值的成果是 Dustin Palmer 的一篇文章,记录了许多在线福利门户未能为即将到来的移动优先现实设计的机会,这在世界其他地方已经是现状。
如果门户网站在手机上表现不佳,依赖智能手机的用户将被可预见地排除在外。但是,糟糕的设计并不是智能手机依赖用户可能面临的唯一潜在行政负担。人们用来访问公共支持的网络和设备并不是最新一代或顶级的。它们正好处于设备价格、年龄和网络性能分布的尾部。这些是前端失去十年的假设一再被证明是灾难性的条件的重叠之处。
如果公共服务部门采用了前端影响者推广的 JavaScript 重堆栈,那将是悲剧性的。基于框架的、"全栈" 开发现在是硅谷的默认设置,但在通用服务中显然应该避免。在商业环境中造成痛苦的笨重和昂贵的堆栈,如果引入公共部门,就永远不可能有成功的希望。
#JavaScript
https://infrequently.org/2024/08/the-landscape/
然而,在这一新平台上工作的开发人员中,出现了一些令人不安的模式。许多开发人员将缓慢的、面向桌面的 JavaScript 框架带入移动网络,这些现代的、以移动为先的项目既不需要也无法承担额外的框架膨胀。到了 2016 年,前端实践已经完全陷入了一厢情愿的思考,尽管警报已经拉响,但没有任何改变。
2016 年之后,低端市场的爆炸性增长已成为既定事实。数亿低收入的翻盖手机用户开始升级换代。不同品牌不断复制 2016 年的中档 Android 手机,以各种名称推出,唯一的恒定因素是中等规格和不断降低的价格。这使得网络与应用作为主导平台之间的竞争真正开始。
但低端革命在网络开发圈几乎未被注意到。前端开发者以与桌面相同的速度向移动网络注入 JavaScript,破坏了预算有限用户的良好体验希望。从 2014 年到 2022 年,中位数设备规格基本停滞不前。与此同时,网络开发者确保了 “iPhone” 中的 “i” 代表了 “不平等”。
高端手机的价格加速上涨,但平均售价仍停留在 300 到 350 美元之间。低端市场的爆炸性增长是唯一阻止平均售价上升的因素。为了保持 325 美元的平均售价,每售出一部 1000 美元的 iPhone,就需要售出三部 100 美元的低端手机,而这正是发生的情况。
尽管如此,以 JavaScript 为先导、以框架为中心的教条仍在继续,无论它与新现实多么不兼容。可以预见的是,那些承诺提供 “类似应用体验” 的工具并没有做到。数十亿部廉价手机总是拥有最新的浏览器,却发现它们的 CPU 和网络被设计用来解决它们没有的平台缺陷的膨胀脚本所堵塞。
2019 年,Code for America 发布了首个国家级在线福利项目访问调查,这些项目由每个州构建和运营。2023 年的后续研究提供了有关数字福利服务传播的重要新数据。CFA 2019 年研究的一个有价值的成果是 Dustin Palmer 的一篇文章,记录了许多在线福利门户未能为即将到来的移动优先现实设计的机会,这在世界其他地方已经是现状。
如果门户网站在手机上表现不佳,依赖智能手机的用户将被可预见地排除在外。但是,糟糕的设计并不是智能手机依赖用户可能面临的唯一潜在行政负担。人们用来访问公共支持的网络和设备并不是最新一代或顶级的。它们正好处于设备价格、年龄和网络性能分布的尾部。这些是前端失去十年的假设一再被证明是灾难性的条件的重叠之处。
如果公共服务部门采用了前端影响者推广的 JavaScript 重堆栈,那将是悲剧性的。基于框架的、"全栈" 开发现在是硅谷的默认设置,但在通用服务中显然应该避免。在商业环境中造成痛苦的笨重和昂贵的堆栈,如果引入公共部门,就永远不可能有成功的希望。
#JavaScript
https://infrequently.org/2024/08/the-landscape/
Infrequently Noted
Reckoning: Part 1 — The Landscape - Infrequently Noted
It would be tragic if public sector services adopted the JavaScript-heavy stacks that frontend influencers have popularised. Right?
《Reckoning: Part 2 — Object Lesson》深入分析了加州政府的 SNAP 福利申请平台 BenefitsCal 在用户体验和性能上的问题。与 Code for America 开发的 [getcalfresh.org](http://getcalfresh.org/) 相比,BenefitsCal 存在加载缓慢、JavaScript 使用过度以及对性能优化的忽视。尽管投资巨大,BenefitsCal 的实际体验远不如 [getcalfresh.org](http://getcalfresh.org/),后者以更简洁、快速的方式提供服务,占据了加州福利注册的近一半。
BenefitsCal 的性能问题主要源于其对大量 JavaScript 的依赖,这不仅增加了页面加载时间,还可能导致低端设备上的标签页崩溃。文章指出,该平台未启用 gzip 压缩,导致用户在访问时需要下载的数据量巨大。此外,BenefitsCal 的缓存策略执行不力,重复访问时仍需加载大量数据,这与现代 HTTP 服务器的标准相去甚远。
架构上,BenefitsCal 采用的单页应用(SPA)架构使得用户在数据完全下载和运行前无法使用任何功能,这与 [getcalfresh.org](http://getcalfresh.org/) 采用的渐进增强 HTML 优先方法形成对比,后者能够更快地提供可交互的内容。文章通过比较其他州的类似服务,如 Wisconsin 的 ACCESS 系统,强调即使是在网络和设备条件不佳的情况下,通过采用渐进增强的方式,也能提供可接受的用户体验。
英国政府数字服务(GDS)的成功经验被用来对比加州的做法。GDS 的 Service Manual 和 Service Standard 提供了政府服务构建和交付的指南,强调了渐进增强的重要性,并避免了大型合同的弊端。然而,BenefitsCal 的失败并未引起对采购流程的反思,资金仍在不断流向主要承包商。
文章还批评了基于 JavaScript 前端开发导致的不平等效应,尤其是在公共部门对 JavaScript 框架的过度依赖。通过分析马萨诸塞州、马里兰州、田纳西州和新泽西州的公共福利平台,文章揭示了 JavaScript 的不当使用和服务器配置错误导致的性能问题。
最后,作者建议公共部门应避免使用复杂的 JavaScript 框架,转而采用更简洁的架构来改善用户体验。文章强调,在边缘情况下追求卓越体验的重要性,并提出公共部门需要学习如何选择合适的架构以优雅地降级服务,确保所有用户都能获得良好的服务体验。
#JavaScript #思考 #性能
https://infrequently.org/2024/08/object-lesson/
BenefitsCal 的性能问题主要源于其对大量 JavaScript 的依赖,这不仅增加了页面加载时间,还可能导致低端设备上的标签页崩溃。文章指出,该平台未启用 gzip 压缩,导致用户在访问时需要下载的数据量巨大。此外,BenefitsCal 的缓存策略执行不力,重复访问时仍需加载大量数据,这与现代 HTTP 服务器的标准相去甚远。
架构上,BenefitsCal 采用的单页应用(SPA)架构使得用户在数据完全下载和运行前无法使用任何功能,这与 [getcalfresh.org](http://getcalfresh.org/) 采用的渐进增强 HTML 优先方法形成对比,后者能够更快地提供可交互的内容。文章通过比较其他州的类似服务,如 Wisconsin 的 ACCESS 系统,强调即使是在网络和设备条件不佳的情况下,通过采用渐进增强的方式,也能提供可接受的用户体验。
英国政府数字服务(GDS)的成功经验被用来对比加州的做法。GDS 的 Service Manual 和 Service Standard 提供了政府服务构建和交付的指南,强调了渐进增强的重要性,并避免了大型合同的弊端。然而,BenefitsCal 的失败并未引起对采购流程的反思,资金仍在不断流向主要承包商。
文章还批评了基于 JavaScript 前端开发导致的不平等效应,尤其是在公共部门对 JavaScript 框架的过度依赖。通过分析马萨诸塞州、马里兰州、田纳西州和新泽西州的公共福利平台,文章揭示了 JavaScript 的不当使用和服务器配置错误导致的性能问题。
最后,作者建议公共部门应避免使用复杂的 JavaScript 框架,转而采用更简洁的架构来改善用户体验。文章强调,在边缘情况下追求卓越体验的重要性,并提出公共部门需要学习如何选择合适的架构以优雅地降级服务,确保所有用户都能获得良好的服务体验。
#JavaScript #思考 #性能
https://infrequently.org/2024/08/object-lesson/
www.getcalfresh.org
Apply for California Food Stamps Online | GetCalFresh.org
GetCalFresh can help you apply for California Food Stamps, also known as CalFresh, SNAP, Food Assistance, or EBT, in as little as ten minutes. Apply for free