持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情
我们经常遇到的一个场景,一堆b端系统,但是内容没有收敛,啥版本都有,所以我们希望做个sdk,把基础的能力都收敛进去。
这个sdk包括以下几个部分:
- 首先就是一些基础的能力部分,这个包含一些没啥深度的常用功能,比如(1)环境信息类,如浏览器信息、部署信息、版本信息;(2)业务信息,如用户信息;权限信息;(3)浏览器兼容;(4)网络能力;(5)监控、打点;(6)数据管理;
- 就是我们的包部分啦,常见的有二方包和三方包,二方包有:是我们自己写的一些包,我们的准入门槛就是,自己写的,比较常用的,比较稳定,能持续产生价值的;三方包会选择一些比较常用的功能性的包,能帮助高效解决特定的问题,这个就比较多了
- 运行时的扩展能力,这个也是跟基础的能力部分比较类似,里面会定一套扩展机制,针对于比较理想的情况,比如多个项目复用了同一个项目,或者想要项目提供一些可扩展的机制。
- 运行时的开发效率工具,这个提供一些套件工具类的东西,但是一定要是运行时的,这样就比较方便
为啥3.4也算到这个sdk里呢,主要就是考虑到sdk希望提供一套整体的b端解决方案,确切地说,是运行时的解决方案。所以我们希望把一些比较核心的能力都内置到这个sdk里。这个就需要画一个大图把这个问题解释清楚,这样才能更方便地理解。
其中比较重要的就是包的引入,我们的包管理机制包含以下几层:
- sdk层,sdk层包含二方包和三方包部分但是又要暴露出去,我们就需要一个可增量引用的机制
- 二方包、三方包层,因为上层要按需引用,所以这层也要支持,那怎么支持呢?
用到二方包A,构建的时候解析,直接针对sdk做特殊处理,不要解析到sdk,而是直接解析到二方包,并且用一个js逻辑给这个二方包处理一下