手里有web,小程序,快应用多个版本的sdk,但每个版本都是独立的,这样需要单独维护多份代码,麻烦而且扩展性不好。
比如我想支持node
端、taro
端、electron
端,都必须重新写一份代码(虽然大部门逻辑可以复制粘贴)
要合并成一个项目(因自己想尝试,把东西做好,至少拿出去能吹 =。=)
目前有2种思路,但感觉都不是很好:
统一入口
实现思路如下:
1 . 提取公共代码
2 . 差异部分提供多个版本的实现(类似axios
的适配器)(uniapp
似乎也这么做的)
3 . 提供统一入口index.js
4 . sdk使用时根据不同的环境export对应的版本
缺点:
1 . 需要依赖treeshaking
才能去除其他sdk版本的代码
2 . 适配器实现可能比较繁琐,随着新端的支持,可能需要修改(这点似乎难以避免)
打包出不同端的sdk
实现思路如下:
1 . 提取公共代码
2 . 差异部分提供多个版本的实现(类似axios
的适配器)
3 . 提供不同端的多个入口
4 . build
时,执行多个命令,每个命令对一个入口进行打包,打包出不同端sdk
5 . sdk使用时引入对应的版本
缺点:
1 . 多端使用时需要分别导入(比如别人项目本身也是支持多端的,那么使用起来就需要动态引入sdk,不友好)
2 . 。。。暂时没想到
大神们给看看,用哪个方案好,或者有其他方式,或者可以参考其他的库?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…