Skip to main content

exposeLib

exposeLib是服务于模块提供方的接口,在rollup打包入口文件使用,用于将代码的类型与代理对象暴露出去,具体使用可参考此libTypes文件。

基础用法

暴露模块代理对象

暴露代理对象并使用 rollup 打包发布到 npm 后,使用方先使用preFetchLib做预加载,然后就可以安全的静态导入

  • 提供方
import { exposeLib } from 'hel-lib-proxy';
import { LIB_NAME } from 'configs/subApp';

export const lib = exposeLib(LIB_NAME);
export default lib;

-使用方

// 入口文件出预加载运行时代码
await preFetchLib('xxx');

// 其他文件里静态导入模块代理对象
import xxx from 'xxx'; // 实际运行代码将由 preFetchLib 填充

xxx.callRemoteMethod(); // 这里即可安全的调用远程方法

暴露模块类型

对于 ts 工程,建议连同类型一起暴露,方便调用方获得友好的 IDE 智能提示,提高开发体验

import type { LibProperties } from './libProperties'; // 此处仅导出类型,不会影响rollup的打包体积
import { exposeLib } from 'hel-lib-proxy';
import { LIB_NAME } from 'configs/subApp';

export const lib = exposeLib<LibProperties>(LIB_NAME);
export type Lib = LibProperties;

export default lib;

高级用法

使用方直接获得代理对象

虽然exposeLib是服务于模块提供方的接口,但如果模块提供方并未发布代理对象到 npm,而使用方有需要使用静态导入功能时,可使用exposeLib直接获取到代理对象

// 入口文件出预加载运行时代码
await preFetchLib('xxx');

// 其他文件里使用 exposeLib 获得模块代理对象
import { exposeLib } from 'hel-lib-proxy';
const xxxLib = exposeLib('xxx');
xxx.callRemoteMethod(); // 这里即可安全的调用远程方法

也可透传类型泛型获得相关类型提示

const xxxLib = exposeLib<LibType>('xxx');