Skip to content
On this page

如何选择技术栈?

很多时候,程序员不知道现有的库能解决他们的问题,就自己造轮子,但很可能造出一个方的轮子 -- 问题轮子。又或者,他们不熟悉周边库的使用技巧,写出难以阅读的代码。

了解常用的周边库,掌握使用技巧,是很有必要的。常用的库,经过社区千锤百炼,不太可能出现大问题,能帮你又快又好的解决问题。

如何选择你使用的库?或者如何做技术选型?

选择一个框架或者库时,应该注意哪些问题?

这些因素对决策的影响程度依次降低。

  1. 是否安全

存在严重安全漏洞吗? 出现了,是否有代替方案?

  1. 是否允许商用

软件许可证是什么?商用版贵吗?公司是否有预算?

  1. 是否有被制裁的风险

被制裁了,有低成本的代替方案吗?

  1. 库维护是否活跃

不活跃,意味着出现问题,没人修复,如果是安全问题,就更加麻烦了。

  1. 文档是否完善

没有完善使用文档,意味着你的团队成员不好上手。

  1. 周边生态是否壮大

周边生态壮大,意味着你能找到围绕库或者框架的解决方案。

  1. 社区支持是否好

比如在 stackOverflow 的问题和回答是否多,多就意味着,使用广泛,你遇到问题,有解决办法。

问题数量趋势如何?是在逐渐增加还是逐渐减少?逐渐增加意味着是未来的趋势,文档、周边生态等会越来越完善,你的项目一旦采用,未来几年不会换技术。

在 github 上的 issue 解决是否及时等。

从库的下载量问答社区的问题数量最后一个版本的发布时间issue 数量,大致能反映一个库的质量。

  1. 升级是否稳定

升级不稳定,很可能给你的项目带来很多问题。

  1. 学习难度是否大

学习难度越大,意味着你在团队里推广越困难,团队成员抵触,然后拉低开发效率。

  1. 是否需要支持低版本浏览器和移动端浏览器

  2. 依赖多吗,包有多大?

前端常用库推荐

数据处理

功能显著特性中文文档类似的库
dayjs处理日期轻便、API友好dayjsdate-fnsfecha
Numeral.js数值格式化轻便、API友好accounting.js
lodash函数式数据处理工具库,体积比较大性能卓越,模块化设计lodashlodash-es ,采用ES6,体积小 underscore.js
number-precision数值计算big.jsmath.js
qs处理查询字符串小,api友好
voca处理字符串小,api友好
chance生成随机字符串内容小,api友好UUIDnanoid
validator.js数据验证小,api友好validate.jsvest

文件处理

功能显著特性中文文档类似的库
videojs播放视频支持HTML5和flash中文文档plyrmediaElement.jshowler.js
pdf.js处理PDF使用广泛jsPDFpdfmakepdf-libpdfkitreact-pdf
file-saver浏览器大文件存储流式处理StreamSaver.js
sheetjs处理Excel使用广泛js-xlsxhandsontableag-grid
cropperjs图片剪切功能强大sharptui.image-editorcompressorjsviewerjs
uppy文件上传速度快,api友好fileponddropzoneuppload
JSZip读取编辑zipapi友好
PapaParse快速而强大的 CSV(分隔文本)解析器api友好

网络请求

功能显著特性中文文档类似的库
axios基于promise的xhr请求库使用广泛axiossuperagentfly.js
功能显著特性中文文档类似的库
js-cookie处理cookie小、API 友好js-cookiecookies

动画处理

功能显著特性中文文档类似的库
animejs处理动画轻量强大
swiper轮播动画轻量强大swiper

DOM 加强

功能显著特性中文文档类似的库
bounds.js异步监测DOM边界,方便实现延迟加载、无限滚动等功能api友好
daterangepicker日期选择api友好
hoverintent可设置停留时间的hover事件加强体积小,api友好
html2canvas把HTML转成canvas体积小,api友好
DOMPurifyDOM净化工具体积小,api友好
diff2html将 Git diff 或 SVN diff 转换为漂亮的 HTML 格式

浏览器特性检测

这类库用于判断浏览器信息。

功能显著特性中文文档类似的库
bowser.js判断浏览器信息模块化设计
broprint.js生成浏览器IDapi友好

浏览器指纹:浏览器的唯一标识,可用于识别用户登录的浏览器设备。

CSS

库|功能|显著特性|中文文档|类似的库

参考:

参考

选择 npm 时,应考虑的 5 个事项

如何快速找到一个合适的 npm 库

9 Device Fingerprinting Solutions for Developers

Released under the MIT License.