Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
304 views
in Technique[技术] by (71.8m points)

如何做到同一份代码多端(web, node,小程序等)支持?

手里有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 . 。。。暂时没想到

大神们给看看,用哪个方案好,或者有其他方式,或者可以参考其他的库?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

1.就目前的技术没有什么特别好的办法,因为操作系统,或者说平台之间都是异构的体系
可以使用uniapp支持android,iso,各种小程序

2.如果要在win上和linux上运行就需要另外编写一套,推荐使用node的electron

3.你也可以开发一套通用的sdk,使用这套sdk开发的代码支持 各种平台,工作量可想而知


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...