Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何挑选高质量的 Node.js 模块 #19

Open
atian25 opened this issue Mar 10, 2017 · 7 comments
Open

如何挑选高质量的 Node.js 模块 #19

atian25 opened this issue Mar 10, 2017 · 7 comments

Comments

@atian25
Copy link
Owner

atian25 commented Mar 10, 2017

1. 前言

如图,截止到 2017 年 3 月, Node.js 模块的数量已经超过 43万,这么多模块难免会良莠不齐,
那我们如何高效的从中找到高质量的模块呢?请听下文分解。

modulecounts

2. npms.io

npms.io - which stands for npm search - was built to empower the JavaScript community by providing a better and open source search for node packages.

npms.io

最早了解到该站点,是听小右在微博说的。


选模块就像选对象,下面我们来看看非诚勿扰选优,呸呸呸,是来看官方的评估标准:

default

2.1 质量 Quality

第一个维度是「质量」,毕竟这是一个看脸的时代,第一印象很重要。

相关的因子就在源码中,故计算起来相对容易些,如:

  • 是否有 REAME,LICENSE,.gitignore 等文件。
  • 是否是稳定版本(按 semver 规则为 >= 1.0.0 ),是否声明了 deprecated
  • 是否包含测试?覆盖率如何?测试是否通过?
  • 是否包含过期的依赖?是否有安全隐患?
  • 有没有官方站点?有没有徽章(badge) ?
  • 是否使用了代码风格检查(lint) ?
  • 代码中的 TODO/FIXME 多不多?

2.2 维护状况 Maintenance

第二个维度是「维护状况」,考察的是一个模块的家况,如果我们希望跟它进一步交往,当然需要了解到这个模块的活跃程度,健康度,是否被遗弃了?

  • issue 的比率
  • issue 被处理的效率
  • 最近一个 commit 的时间
  • commit 的频率
  • 发布的频率

2.3 知名度 Popularity

第三个维度是「知名度」

  • GitHub Star 数
  • GitHub Fork 数 (说个题外话,Fork > Star 说明什么?)
  • GitHub Watch 数 (鄙视下那些经常在 GitHub blog 下乱发消息的人)
  • 贡献者数量
  • 被其他模块依赖的数量
  • 下载安装次数
  • 下载增长率

2.4 个人魅力 Personalities

最后一个维度是「个人魅力」

  • 当两个库差不多的情况下,一般选择大神的库,如 tj 、substack、fengmk2。
  • 不过 npms 目前并没有把该属性纳入计算。

2.5 参考资料

3. 写在最后

  • node-modules 是国内很多 Node.js 大神维护的 Group,里面的模块都经受住大规模的应用考虑,标准化和质量都不错,欢迎关注。
  • 本来想写一个 npms 的 CLI 的,结果被人抢先了,npm-compare ,有兴趣的可以玩玩,PS:@fengmk2 可以考虑集成到为 cnpm compare
  • 对于高质量的模块,我们推荐通过 ^ 引入,而不是 ~ 或写死版本,像 eggjs 的依赖都是 ^ 的。想知道为何?开问题邀请 @dead-horse 回答吧。
@avilang
Copy link

avilang commented Jun 1, 2017

对于高质量的模块,我们推荐通过 ^ 引入,而不是 ~ 或写死版本,像 eggjs 的依赖都是 ^ 的。想知道为何?开问题邀请 @dead-horse 回答吧。能回答下么,想学习下

@atian25
Copy link
Owner Author

atian25 commented Jun 1, 2017

@17biubiu
Copy link

17biubiu commented Jun 6, 2017

前端开发,新入手后端后发,有没有eggjs比较好的案例推荐学习下

@MickeyMouse-lh
Copy link

最近老大让我总结egg的最佳实践,我有点儿不知道从哪下手的感觉,请大佬指点!

@atian25
Copy link
Owner Author

atian25 commented May 5, 2018

@atian25
Copy link
Owner Author

atian25 commented May 5, 2018

@MickeyMouse-lh 这个话题有点大。。。不同阶段,不同受众的最佳实践不一样

@LeeYunhang
Copy link

很赞,收藏了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants