原文链接:The 12 Things You Need to Consider When Evaluating Any New JavaScript Library
水平有限,根据自己的理解进行删减和重排,有能力还是看原文比较好,我只是个小小的搬运工😜。
反观这些,当自己写一个库的时候,也需要思考下这些有没有做到。
正文开始:
完整因素
1、🕹️ 特性(Features)
2、🐞 稳定性(Stability)
3、⚡ 性能(Performance)
4、🎁 依赖包生态(Package Ecosystem)
5、🌎 社区(Community)
6、👶 学习曲线(Learning Curve)
7、📖 文档(Documentation)
8、🔧 工具(Tooling)
9、🏛️ 发展史(Track Record)
10、👫 团队(Team)
11、⚖️ 兼容性(Compatibility)
12、📈 趋势(Momentum)
特性
选择一种技术的首要原因就是:这种技术可以做啥?
评分等级
- A - 能完成以前不能完成的事
- B - 用更加优雅的方式做相同的事
- C - 比现有方案差
稳定性
不管你的库功能有多么丰富,稳定性都是不可忽视的。如果开发人员在使用的过程中每隔两分钟都发生一次错误,那简直要崩溃了。
评分等级
- A - 少量的bugs和问题,很容易调试和解决掉
- B - 还有些问题,但是不影响你的软件的稳定性
- C - 已经影响到你的软件的稳定性
性能
如果一个用户打开你的网站需要15秒的话,一切的功能都是徒劳,还没打开,用户已经离开了。
这也是为什么有一个功能这么完善的react,而像preact、riot还能存活下来的原因。
评分等级
- A - 体积小,加载快,支持各种优化方案
- B - 对你的软件性能没有影响
- C - 对你的软件性能有影响
包生态
早起的小程序相信使用过的都很痛苦,大家都用npm、es6模块管理,它却只支持commonjs。还有第三方包的成熟度,对TS的支持等。
评分等级
- A - 圈子里对一些公共问题有明确的解决方案,第三方包有很好的维护性和文档
- B - 有很多可选的竞争对手
- C - 没有可选包,都要自己动手
社区
另一个考虑的因素综合性社区,当有问题的时候,这些问题可以得到解答。比如Stack Overflow、GitHub的issues。
评分等级
- A - 有论坛、聊天室、GitHub issues 活跃度高。Stack Overflow 有大量相关问题回答。
- B - 论坛或聊天室活跃度低
- C - 除了GitHub没有其它社区
学习曲线
想想react和vue就知道了。
评分等级
- A - 马上就能上手
- B - 需要学习一周
- C - 需要学习几周
文档
好的文档能让学习曲线大大降低。这个看看react和vue的文档就知道了。
评分等级
- A - 有独立的文档站点,文档有演示、项目事例、指导、api说明、良好的代码注释
- B - 有基本的Readme和api说明
- C - 只有简明的readme,得读源码才知道如何使用
工具
调试Redux的时候,浏览器开发工具简洁明了的图形化界面,VS Code对TypeScript的良好支持。
评分等级
- A - 两个或以上的工具,包括浏览器扩展,代码编辑器拓展、CLI 工具、第三方SaaS服务
- B - 一个工具
- C - 没有工具
发展史
历史越悠久的库,风险越小,像Rails/PHP,除非它的技术栈很陈旧语言本身不适应发展,面临淘汰。
评分等级
- A - 4 年以上历史,大量公司实践过
- B - 1-4 年历史,已经有不少人使用过了
- C - 少于一年,几乎没有人用过
团队
Angular.js 出于Google和 React出于Facebook,都是世界一流大厂,家底厚,人员充足,资源多。Vue是个美丽的例外,对工程艺术的执着,总比背着api而完成要好些。
评分等级
-
A - 一线大厂的开源团队
-
B - 中型团队维护,并有良好的分工
-
C - 独立维护
兼容性
除了库本身对浏览器的兼容性重要之外,版本的迭代对旧版本的兼容也很重要。想想你升级babel的时候。
评分等级
- A - 升级总是能最大程度向后兼容,不兼容部分给出警告。不兼容的老版本维护两年或更久
- B - 不兼容性升级,但给出文档说明
- C - 频繁升级改动大,又没有好的说明
趋势
大家保持着对这个库的新鲜关注度,能在这个库上面发现一些好的技术点。
评分等级
- A - 在Hacker News热烈讨论,stars数量多,各大会议都要提及
- B - 启动阶段大家有些兴趣,少量stars
- C - stars少得可怜

