我们假设有三个服务,分别是 ssr-base
、ssr-module-auth
、ssr-main
,其中
ssr-base 基础服务,负责第三方依赖的管理,以及提供基础的业务组件、工具函数。
ssr-module-auth 业务服务,按照业务模块来拆分服务,这里是负责用户认证相关,包含登录、注册、找回密码、验证码相关,最终对外会导出一个路由的配置文件。
ssr-main 聚合服务,将不同业务服务导出的路由配置注册进路由总线中,实现应用程序的聚合。
每一个服务,既可以是 Host,也可以是 Remote。下面将会以 ssr-base
和 ssr-main
作为例子,分别扮演 Remote 和 Host,你将会了解到它是如何工作的。
在执行 tsc --declaration --emitDeclarationOnly --outDir dist/src
命令时,由于找不到 npm/axios.ts
这个文件,所以不会生成类型文件。
直接将 axios
模块导出。
ssr-main
此时作为 Host,需要将 axios
链接到 ssr-base/npm/axios
,并且需要在项目安装 axios
模块来获得类型提示。
源码:
将会被替换成:
在执行 tsc --declaration --emitDeclarationOnly --outDir dist/src
命令时,由于存在 src/axios.ts
这个文件,就会生成相关的类型文件。
创建文件,并导出 axios
。
导出 axios
软件包。
ssr-main
此时作为 Host,需要导入 ssr-base
服务。
此时,你在业务代码中将会获得类型提示。
如果要考虑到老系统需要迁移,你还是可以选择将 axios
替换成 ssr-base/src/axios
,并且需要安装 axios
模块到当前项目下才能获得类型提示。
packs.enable
配置为 true
时,在编译完成后,会将 dist
目录进行归档,在根目录生成 dist.tgz
。
未完待续!