手里有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 . 。。。暂时没想到
大神们给看看,用哪个方案好,或者有其他方式,或者可以参考其他的库?
1.就目前的技术没有什么特别好的办法,因为操作系统,或者说平台之间都是异构的体系
可以使用uniapp支持android,iso,各种小程序
2.如果要在win上和linux上运行就需要另外编写一套,推荐使用node的
electron
3.你也可以开发一套通用的sdk,使用这套sdk开发的代码支持 各种平台,工作量可想而知