持续创作,加速成长!这是我参与「掘金日新计划 · 6月更文挑战」的第30天,点击查看活动详情
我们常用的一些库,里面通常会定义一个总的入口以及各个api的入口,比如lodash,既可以引入import lodash,也可以使用诸如import { cloneDeep }这种方式。那么我们自己写该对这种暴露出来的api如何分类呢?我们下面就来看看。
简单来说,就是输出默认的api以及特定api方法的输出。举个例子,我们要写一个前端通用的物料仓库,提供一个统一的入口。
我们可以提供一个init方法,生成一些默认的方法。但是二方、三方的库,可以提供特定需求的引入。
我们提供一个这样的api:
import {init, lodash, antd} from 'sdk'
init({
libs: [loash, antd]
})
这样在使用的时候直接就sdk.lodash, 就非常的方便。另外除了引用这俩库以外,也可以在html中同步引入一些其它的三方库,在init函数执行的的时候,会自动搜集这些动态库,并将其挂载到全局变量上。通过这种方式,我们就可以在html加载的时候,动态渲染一些内容进去,实现基础依赖的可配置化。
另外我们还得实现另外一类通用的api,如register,这个api可以实现一些需要用户传参数的内容以及一些自定义的内容。
最后我们需要一些特定的api,去实现一些需要定制的内容。比如reigsterRequest函数,可以针对较为复杂的内容进行特定的封装,大体上这三类api就可以实现我们的能力。
另外的话就是我们的一些通用二三方包了,这些包也会作为api暴露出来。但是这有涉及到很多的问题,需要我们仔细研究,比如api是否存在冲突,types的提示怎么处理,在项目里用上会不会有什么问题。