背景
项目引入了一个叫做copy-text-to-clipboard提供“粘贴、复制”功能的三方库,上线后用户反馈页面报错白屏。经过排查发现是copy-text-to-clipboard在打包时const、let并没有编译成var导致iOS9.x上出现语法兼容性问题。
那么引申出一个思考,我们在使用外部库的时候我们应该做到什么程度的技术调研与预演,从而尽量地规避因为不合理使用三方库而带来的线上BUG。
我们将从下面几个方面来展开:库的活跃度、适用性、使用(改造)成本
方案
库的活跃度
库的活跃一般体现在几个方面:
- star数、fork数,体现使用者对于这个库的认可度。
- issue的提问质量和issue的回复速度,以及对于问题的修复积极度。
库的适用性
虽然我们调研的库从活跃度上看,非常不错,但是如果直接使用,可能和现在的项目并不匹配。这时我们就需要根据项目的时候情况再进一步地进行技术预演:
- 实际引入到项目当中,开发一个简单的demo页,检查环境是否兼容(node版本),打包是否出错,部署后设备是否兼容。
- 库提供的API是否符合需求。有可能产品只是想要一个自行车需求,然而我们却接入了一个汽车的库,虽然都是车,都能够载人,但是出现功能的冗余,功能的冗余必然会造成包体积的变大。
库的使用(改造)成本
当上面2点都满足时,为了后期迭代考虑,这时我们需要考虑库的接入(改造)成本了。
- 文档的完备程度
- 遇到问题,需要复写时是否方便,能否支持一定程度的自定义。
⚠️⚠️⚠️还有最最最重要的一点,使用前一定要看清楚开源协议,看能否支持商用