主要观点:修补全局变量是很多工程师易误解的话题,虽有便捷性但危害大,应避免。以 React、Next.js、Bun 为例,它们曾引入基于修补全局变量的功能,引发社区强烈反对。
关键信息:
- 修补全局变量即修改非自身拥有的代码行为,如 Next.js 扩展
fetch
函数,React 也对其进行修补。 - 修补全局变量虽看似便捷,如方便添加功能,但有诸多危害,如维护困难、降低可预测性、影响学习体验、导致锁定以及阻碍进步等。
- 列举了 MooTools 因修补全局变量导致语言规范受限的例子,强调其危害。
重要细节: - 在 Next.js 的新缓存 API中,团队通过扩展
fetch
函数提供特定功能,引发关注。 - 如在 Next.js 中,
fetch('https://kettanaito.com', { next: { revalidate: 10 }})
可缓存和重新验证请求,但在其他框架中行为可能不同。 - 以 MSW 为例,说明不良 API 未起到教育作用,而好的 API 应能教授概念。
- Bun 的
proxy
功能虽便捷但未遵循规范,存在锁定问题。 - 提出替代方案,如使功能显式化,以 Bun 的
proxy
为例,将其从fetch
中分离,避免混淆和问题。 - 列举了常见的反对意见及反驳,如认为没人在乎、是更好的开发者体验等,并以 React 和 Next.js 为例说明它们正逐渐远离修补
fetch
。
总之,应认识到修补全局变量的危害,避免采用这种做法,寻求更好的替代方案。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。