周刊 03 期 - Clash 风波

Summary from

周末在浙江省图书馆学习 Swift UI,效率高。React 文档更新后,提出九个最佳实践,强调使用 useMemo 和 useCallback 应在性能问题出现时再考虑。ESLint 团队在 v9 废弃格式化规则,推出 ESLint Stylistic 插件作为替代。小米更新 MiSans 网站,展示出色体验。Clash 系项目因作者删除,相关项目也被归档或删除,另一个工具 Surge 未受影响,引发猜测。

周末去了一趟浙江省图书馆新馆,5 层楼,非常大。因为是预约制,所以也不用担心进去之后没座位的问题,在那边学了一下午 Swift UI,效率非常高。

新版 React 文档中的九个最佳实践

随着 React 文档更新后,官方团队会把一些最佳实践以思考题的方式传达给开发者。

https://blog.testdouble.com/posts/2023-10-16-react-docs-recommendations

这篇文章选出了 9 个作者认为比较好的最佳实践,这些内容中大部分和我们的开发思路一致,不过我发现了一个我认为在以前会比较有争议的结论。

在考虑是否使用 useMemo、useCallback 或 React.memo 进行缓存时,请推迟缓存,直到观察到性能问题。

在刚开始工作的时候,受到 React Hooks 热潮的影响,非常喜欢用 useMemouseCallback 对值和函数进行包装,而不去考虑是否需要包装。并且在使用这两个 hook 的时候,也没有搭配 memo 去使用。

在团队内部也因是否有必要使用这两个 Hook 而争论过。 在文档中,官方团队明确指出了这几个 API 的使用场景,就是在遇到性能问题的时候才进行使用。

相关阅读

  1. Should you add useMemo everywhere?
  2. Should you add useCallback everywhere?
  3. Should you add memo everywhere?

ESLint Stylistic

ESLint 团队决定在 v9 废弃代码格式化相关规则,原因是因为团队认为这不应该是 ESLint 该做的事情,理应交给 Prettier 或 dprint 这类源代码格式化工具去做。

并且 ESLint 团队认为维护这些规则对他们来说也是吃力不讨好的事情,目前还有很多缩进规则的问题没有得到解决。 ESLint 相关 ISSUE

所以 ESLint 社区中出现了替代方案,ESLint Stylistic,提供了一套 ESLint Plugin,目前包含 4 个 Plugin:

  • Default
  • JavaScript
  • TypeScript
  • JSX

为什么 ESLint 在宣布废弃格式化相关规则维护之后,社区中就立刻推出替代方案了呢,这是因为目前代码格式化的工具的可定制化能力比较差,并且在效果不好的时候,开发人员也没办法进行定制或改进,因此有部分人员热衷于使用 ESLint 来进行代码的格式化。

相关阅读

  1. Why I don't use Prettier

MiSans

https://hyperos.mi.com/font

随着 HyperOS 的发布,小米也更新了一版 MiSans 的网站。页面样式和交互做的非常有特点,体验属于第一梯队。

Clash 系项目仓库删除风波

11 月 2 日,Clash For Windows 的作者删除了托管在 Github 上的该项目,原因不明。对此行为有很多猜测,但是大方向应该是作者由于某些行为被警方找到了。

11 月 3 日,Clash 系的相关项目,包括但不限于内核,其他设备的客户端,均都采取了 Archive 或者删除的操作。

比较有趣的一点是,另一个翻墙工具 Surge(其开发者认为是网络调试工具),实名上网,而且在北京落户,却没有收到波及和影响,也引发了网络上的一些猜测。