12 个评估 JS 库
- 特性。
评分:A - 化腐朽为神奇。B - 更优雅的解决方案。C - 比现有方案差
- 稳定性。
评分:A - BUG 很少,方便调试。B - 不会影响你的稳定性,比如出 BUG 概率和你的业务代码相近。C - 引入该库会让你背线上故障。
- 性能。
评分:A - 小体积,高性能,支持各种黑科技特性比如 Tree shaking。B - 对性能没有影响。C - 导致性能降低
- 包生态。
评分:A - 方案唯一且生态运作良好,维护记录标准规范且顺畅。B - 很多新晋网红包,且竞争选择多。C - 没有人给你做包,想用要自己封装。
- 社区。
评分:A - 各种论坛每日都很活跃,Github issue 问题日清。B - 论坛/聊天室不太活跃。C - 除了作者自吹的文档,再也找不到任何相关信息了。
- 学习曲线。
评分:A - 一天就能成为这个库的熟练搬砖工。B - 浪费了一周时间才能投入使用。C - 学了一周才发现之前的理解是错的,而且认识到这只是个开始
- 文档。
评分:A - 专门维护文档站点、视频、图片、示例项目,再好一点的话可以有专门基金会组织编程比赛,通过某三岁孩子可以一天入门强力影射技术生态的完备性。B - 有最基本的 Readme 和 API 文档。C - Readme 写的是 Create react app,其他的只能查源码了。
- 工具。
评分:A - 两个以上的工具,包括浏览器拓展、代码编辑器拓展、CLI 工具或者 SaaS 服务,实力碾压的话,会有许多花哨的辅助工具出现。B - 一个工具。C - 没有工具。
- 发展历史。
评分:A - 4 年以上历史,有权威认证。B - 1-4 年历史,已经有不少人使用过了。C - 作者自己都没用过就安利你用到线上去。
- 团队。
评分:A - 一线大厂,品质权威认证。B - 中型团队维护,并且有清晰的分工记录。C - 工作之余顺便开源出去,就没打算对这个库负责
- 兼容性。
评分:A - 总是能兼容升级,实在不行就提前警告并告知在某个版本会废弃,并提供迁移工具,比如 React。B - 有 Break Change 但是文档把升级改动写的很清楚。C - 突然到来的小版本升级让你不得不重构之前的调用代码。
- 趋势。
评分:A - 是 HackNews 的明星话题,Star 成千上万,各种会议以此为名(Vue conf,React conf)。B - 几百 Star,有一些讨论。C - 别看现在 Star 少,迟早有一天我会超过那啥那啥。
- 搬家成本
如果哪天不用这个库了,换成别的成本有多大?
这方面测试库做的很好,很多主流测试库比如 Jest、Ava、Mocha、Jasmine 等之间都有互转的脚本,业界基本达成了一些共识和规范。
比较坑的是 React、Vue、Angluar,使用之后你基本就被绑定了,至今没有谁可以无缝做各大框架的迁移。当然 JS 的年龄还很短,而且说不好未来还会被新语言、技术、容器颠覆而成为历史,标准化不是做不到而是需要时间,也许就在十几年之后,但是今天就是做不到。
总结
程序员开发的工具库也适合==点线面体==的概念。一个库 react-button 就是一个点,而它所在的线 react 如果被人抛弃了,无数个 react-xxx 也会翻船。而 react、vue、angluar 这些线都在 js 引擎这个面上,当可以用 C# 写 WebAssembly 时,Reason、Blazor、Dart 就会逐渐成为浏览器的主角,react 之类的库统统要回炉打造。而当未来人机互联不需要浏览器作为媒介时,js 引擎这个面依附的体 - 人机交互场景也被打翻了,这一浪又会引起多大的变化