其他框架接入微应用
为一些使用
icejs
、
create-react-app
、umi 等三方框架的用户提供便利的接入指南。
icejs 应用 #
有关 icejs 应用接入 icestark 的细节请参考 微前端 icestark 。
create-react-app 应用 #
改造步骤如下:
安装 icestark 依赖 #
入口文件注册生命周期 #
打开
src
目录下的入口文件
index.js
,注册子应用生命周期。
修改 webpack.config.js #
在使用
create-react-app
创建项目后,需要
eject
来支持自定义构建配置。执行命令:
执行完毕,项目会新增一个
config
目录,在
config
目录下找到
webpack.config.js
文件,新增配置:
示例 Repo #
https://github.com/maoxiaoke/icestark-cra-child
nuxt.js 应用 #
基于 nuxt.js 2.x
nuxt.js 可以通过 plugin 来注册微应用的生命周期。
新建 nuxt.js 自定义插件,并注册生命周期 #
在
plugins
目录下新建
microapp.js
文件,注册生命周期
引入自定义插件 #
在
nuxt.config.js
中引入插件,并关闭
ssr
。
tip
有关 nuxt.js 接入微应用的更多反馈和疑问,欢迎反馈至 icestark 接入nuxt.js
umi 应用 #
基于 umi 3.x
改造步骤如下:
安装 icestark 依赖 #
src
目录下添加
app.tsx
文件
#
在
app.tsx
修改子应用渲染的节点,并注册子应用生命周期。
匹配页面路由 #
经过上面的步骤,umi 子应用已能够正常加载。但需要正确渲染,还需要匹配当前渲染路由。比如,在子应用渲染在
https://localhost:3333/seller
路由下,则需要修改 umi 子应用
.umirc.ts
,通过
base
属性添加路由前缀。
示例 Repo #
https://github.com/maoxiaoke/icestark-umi-child
next.js 应用 #
基于 next.js 10.x
定义基准路由 #
next.js 可以通过 basePath 来指定。
由于 next.js 无法运行时指定 basePath,因此建议提前对基准路由进行强约定。比如约定
http://localhost:3000/seller
下渲染上述配置的 next 微应用。则主应用的
path
配置需要与之一一对应:
微应用通过 entry 方式接入 #
其他 #
- next.js 微应用本地开发访问跨域时的处理
可以通过 next.js custom server 来处理本地开发时访问跨域的问题。其中 server.js 的内容可参考:
tip
有关 next.js 微应用接入 icestark 的更多疑问或方案,可以在这个 issue 下讨论
Angular 应用 #
基于 Angular 12 (适用于 Angular 5 及以上版本)
定义基准路由 #
修改
src/app/app-routing.module.ts
文件,使其在 icestark 中拥有正确的基准路由。
入口文件新增生命周期函数 #
main.ts
是 Angular 应用的入口文件,我们在这里增加 icestark 渲染所需的生命周期函数。
自定义 webpack 配置,将应用打包成 UMD 规范 #
要开启 Angular 自定义 webpack 能力,需要安装
@angular-builders/custom-webpack
:
建议安装与 Angular 版本对应的版本
接下来,修改配置文件
angular.json
,找到 build 和 serve 配置,修改成下面的内容:
并定义
custom-webpack.config.js
的内容:
给 Angular 加上一个唯一标识 id #
为防止 Angualr 与其他 Angular 应用冲突,建议给
<app-root>
加上一个唯一的 id,比如当前应用的名称:
在
src/app/app.component.ts
修改 Angular 挂载的节点:
使用 entry 或 entryContent 接入 #
由于 Angular 默认渲染在
<app-root></app-root>
节点,因此建议通过
entry
或
entryContent
的方式接入。比如 Angular 应用部署在
http://localhost:3333
,则主应用配置建议配置如下:
示例 Repo #
https://github.com/maoxiaoke/icestark-angular-12
Vite 应用 #
icestark 在 v2.6.0 版本开始支持 ES modules 类型微应用的加载。由于目前 Vite 是目前最为流行的基于 ES modules 的构建工具,因此本章节介绍 Vite 应用接入 icestark 的具体步骤。
定义生命周期函数 #
首先,在 Vite 应用的入口文件(Vue 应用通常是
main.t|js
,React 应用通常是
app.t|jsx
)定义生命周期函数,以 Vue 应用为例: