如何找到最好的开源 Node.js 项目来提升你的技能

2025-06-08

如何找到最好的开源 Node.js 项目来提升你的技能

最初发表于coreycleary.me。这篇文章来自我的内容博客。我每周或每两周发布一次新内容,如果您想直接在邮箱中收到我的文章,可以订阅我的新闻通讯!我还会定期发送速查表、其他开发者的精彩教程链接以及其他免费内容!

对高级开发人员:“你是怎么变得这么擅长编程的?” “我不知道,我想我只是写了很多代码,也读了很多代码……”

您是否曾尝试寻找一个可以研究以提高技能的开源 Node.js 项目,但最终却根本找不到,因为您不知道什么才是真正值得研究的“好”项目?

仅 GitHub 上就有数十万个开源仓库,你该如何缩小范围呢?你该如何判断研究这个项目是否值得你花费宝贵的下班时间(因为学习通常是在下班后进行的)?

如果您花了几个小时阅读它,却发现它实际上无法阅读,而且您比以前更加困惑,该怎么办?

你可以从工作中使用的项目开始,或者从流行/广泛使用的项目开始。这是一个很好的起点,但它并不能让你一路走到那里。例如,仅仅因为它流行/广泛使用并不一定意味着它值得学习(尽管这通常是一个好兆头)。

与其浪费宝贵的时间在 GitHub 上一个接一个地搜索代码库,不如快速找出哪些项目值得学习,哪些不值得?这些项目能帮助你提升技能,让你的职业生涯更上一层楼,而不是让你浪费大量时间却学不到什么……

指导您的标准列表

我发现识别优秀研究项目的最佳方法是使用一组标准来缩小搜索范围,并在研究 repo 的几分钟内快速知道它是否值得研究。

尤其是在我职业生涯的早期,我阅读了大量不同项目的源代码,不仅是为了提高阅读和理解代码的能力,也是为了提高编写代码的能力,以及理解设计模式。在我为提升技能所做的所有事情中,这是帮助我进步最快事情之一。

这篇文章介绍了我用来筛选优秀研究项目的标准(现在依然沿用)。我大致按照优先级排序(不过下面的优先级并非硬性规定,因为总会有例外)。

附注:这不一定是具体研究什么的指南,尽管其中许多标准适用于此。

它也不一定能指导你选择合适的库/框架用于你的项目。但再次强调,这可以作为一个起点。如果你在 635,000 个 npm 模块中不知所措,不妨看看我写的这篇关于这个的文章!

关于标准...

文档

在评估一个项目时,文档可能是最重要的考量因素之一。无论你是使用代码库进行学习,还是仅仅在项目中使用,文档都是至关重要的。

它非常重要,因为它是代码库的“入口点”。文档(我将项目示例也包含在内,通常放在代码库的各自文件夹中)通常是开发人员在开始编写代码之前首先接触到的内容。

由于开源项目通常是在别人的空闲时间编写的,因此文档经常会被忽略,但重要的是至少要有一定程度的文档,而我总是优先考虑文档较多的文档。

好的文档通常包括:

  • 项目根目录中应有一个 README.md 文件。有些项目的文档也分散在各个子文件夹中,虽然这样总比没有文档好,但我发现这种风格更难阅读,也更难与其他目录中的信息整合。该文件应该列出公共 API/函数及其功能、使用方法以及任何“陷阱”等。
  • 视觉图表(如适用)
  • 文档中的示例,或包含多个示例的单独文件夹。包含示例的文件夹的好处是,您可以克隆代码库并在其中运行它们,而无需从 README.md 或其他 Markdown 文件中复制/粘贴。这些示例应该会向您展示如何设置、使用 API 等。

例如,函数式编程库 Ramda为其 API 提供了出色的文档,其中包括一个 REPL,允许您运行示例并直接在浏览器中使用该库!

研究代码库不仅能提高代码读写能力,还能提升文档编写能力。好的项目会提供优秀的文档示例,方便你参考

测试

在我看来,测试和文档同等重要,所以在优先级方面,我会把它们放在同等重要的位置。文档可以让你很好地了解项目、API 等,而测试则能真正帮助你在学习过程中遇到困难时找到答案。

希望代码本身写得好,但当你无法理解代码时,有测试可以依靠也很重要。即使你没有遇到困难,我发现有测试可以跟进也非常有帮助,所以我经常在 IDE 中同时打开测试文件和源文件。

测试与文档类似,如果你读不懂,就无法理解。好的测试应该包含易于理解的断言,例如:

it('should filter out non-strings', () => { ... })
Enter fullscreen mode Exit fullscreen mode

与模糊的断言相反,例如:

it('should filter the object', () => { ... })
Enter fullscreen mode Exit fullscreen mode

另一种快速评估单元测试的方法是在 README.md 中查找代码覆盖率标记。一些热门项目通常都有这个标记,例如下面的 Express:


然而,仅仅因为一个项目的测试覆盖率高,并不意味着测试质量好,或者编写得有意义。我会将此检查与上面提到的其他测试评估方法结合起来。

结构/代码组织

由于 Node 项目缺乏“规范”的结构或代码组织,开发者通常会参考现有的开源项目来寻求指导。因此,如果你正在寻找项目的结构示例,那么这个标准可能比较难确定。

不过,您可以快速检查几件简单的事情:

首先,项目是否遵循任何结构?还是所有内容都存储在随机命名的文件夹和文件中?对于较小的项目,将所有代码放在index.js项目根目录中的文件中通常是可以的,只要与项目的大小/功能相符即可。如果该文件长达 3000 行代码,并且执行许多不同的操作,那么阅读起来可能会令人困惑。

其次,即使你不熟悉这个结构,你能快速了解它的组织结构吗?部分原因是目录和子目录的命名要恰当,但我发现“直觉检查”通常在这里也有效。

例如,如果您发现实用函数分布在 5 个不同的目录中,或者您发现目录结构深度达到 4+ 级,这通常表明代码组织不好,您在研究项目时会很难弄清楚东西在哪里。

代码质量

代码质量是一个备受争议的话题,并且根据你问的人的不同,它有点主观。

即便如此,还是有一些快速评估质量的方法:

除了小型、单一职责的函数之外,我能想到的最佳指标(尽管完全不科学)是代码本身是否可读。我通常会花 30 秒阅读一个源文件——如果我无法大致了解代码的作用,那么它可能写得不太好。

初级开发人员如果不花超过 30 秒的时间阅读代码,可能会更难理解代码的作用,因此如果您遇到这种情况,我建议您查找有意义的函数和变量名称,检查以确保函数不是 400 行代码等。这可能需要多花一点时间,但不会太多。

现代 JS 版本

任何 JavaScript 版本的项目当然都有效,但我并不想将其视为一个完全独立的标准,而是想指出,你可能需要寻找使用 ES6 及以上版本的项目。阅读任何 JavaScript 版本的代码都能让你成为更优秀的开发者,但鉴于现在是 2018 年,你可能需要研究 ECMAScript 标准的更现代版本。

这不仅仅是为了追求“最新最好”,而是为了了解现代模式。ES6 带来了许多变化,不仅仅是语法上的变化,还带来了新的模式。

许多稳定且久经考验的项目都是在 ES6 之前编写的,所以再次强调,不要自动忽略它们。但根据你的学习目标,你可能需要优先考虑 ES6+。

近期发展和未解决的问题

如果项目在过去一年中没有任何提交,则可能意味着它处于稳定状态并且不需要进一步开发,或者只是没有得到维护。

如果项目不再维护,你可能会遇到一些功能无法正常工作的问题,这可能会影响你对项目运作方式的理解。通常情况下,影响不大——毕竟它应该还能正常工作——但还是需要注意。


同样,如果一个项目有很多未解决的问题,这不应该取消它的资格,但是通过对问题的第一页进行 1 分钟的快速搜索,您应该能够判断这些只是来自社区的很多想法,来自用户的问题,或者项目中是否真的存在很多真正的错误,这将使您的研究更加困难。

当然,如果一个项目在现实世界中得到广泛应用,那么它就被证明是有效的,而且真正的错误也不会成为什么大问题。

一个起点

现在您已经有了一组筛选项目的标准,那么如何开始应用该标准的初始项目列表呢?

项目规模
你需要花多长时间来学习?显然,如果你没有太多时间投入,选择一个大型项目来学习并不是一个好主意。

当然,您不必研究整个项目来了解一些事情,但我认为,如果您不研究代码库的很大一部分,那么您的了解就不会完整。

您使用的东西
正如本文开头所提到的,研究您当前使用的项目/工具是找到一些项目以在选择研究项目时应用此处标准的好地方。

您将能够了解项目的功能以及它的一些 API,这将使学习代码变得更加容易。

您有兴趣了解的一些内容
希望这是不言自明的......

项目类型(库、框架、应用程序)
最后,您可能需要慎重选择要研究的项目类型。

例如,您是否每天都在工作中使用 HTTP 框架,但却不知道它的具体工作原理?您的团队是否要构建一个供公司其他 100 名开发人员使用的新库,并且您想学习 API 设计的最佳实践?或者,您只是想更熟悉应用程序的架构?

总结

我们在这里讲了很多,但当你实际浏览 GitHub 或其他开源托管工具来搜索代码库时,使用上述标准进行评估其实可以很快完成。单个项目只需 5-10 分钟。

如果您发现一个项目具有良好的文档、良好的测试等,那么它很可能就是赢家。

现在,相比于盲目地搜索代码库或在网上向陌生人寻求建议,你并不知道研究这些项目所投入的时间是否值得。有了一套标准,你只需要花费一小部分时间就能找到好的项目。

从我推荐的少数几件事开始,在此基础上获取潜在项目列表,然后应用我列出的标准来筛选出不符合标准的项目。

您不仅能够快速建立一份可靠的学习清单,还能找到成为更优秀的开发人员所需的知识!

我正在写很多新内容,帮助大家更容易理解 Node 和 JavaScript。之所以说更简单,是因为我认为它没必要像有时那样复杂。如果你喜欢这篇文章并觉得它对你有帮助,可以再次点击链接订阅我的新闻通讯!

链接链接 https://dev.to/ccleary00/how-to-find-the-best-open-source-nodejs-projects-to-study-for-leveling-up-your-skills-1c28
PREV
Node REST API 中的控制器和服务有什么区别?
NEXT
快来开发这些项目,找到你的第一份开发工作吧!#3:带手电筒效果的 Instagram 动态!