基于single-spa搭建微前端应用

1,062 阅读2分钟

创建项目

安装脚手架

single-spa有官方自带的一个脚手架create-single-spa,用于快速创建项目。首先需要全局安装脚手架

yarn global add create-single-spa

创建基座

基座用于插拔子应用。执行 create-single-spa base创建基座,也就是根应用。执行命令后,出现如下所示:

image.png

第三个即为创建根应用。

创建子应用

分别执行 create-single-spa react-app,create-single-spa vue-app创建一个react子应用和vue子应用。 然后选择第一个single-spa application /parcel即可.

image.png

安装完成之后,目录结构如下所示

image.png

修改项目

修改子应用

修改vue的子应用

首先在vue项目的根目录下创建vue.config.js用于修改端口号,如下所示

image.png

然后需要修改vue项目里的路由,将vue项目路由的base修改为/vue,如下所示

image.png

此时要访问vue项目里的About页,相当于访问路由/vue/about

修改react的子应用

同样的,修改react的端口号为4000,这里就不写配置文件了,直接在package.json里改

image.png

然后修改react项目的base路由为/react

image.png

修改父应用

子应用需要在父应用中注册,找到base应用下src下的root-config.js文件,在这里进行子应用注册

注册vue子应用

image.png

在src下的index.ejs里面,需要指定加载子应用的路径

image.png

注册react应用

image.png

在src下的index.ejs里面,需要指定加载子应用的路径

image.png

注意:因为React子应用中,默认会把react和react-dom做了抽离(webpack的externals),所以,直接在9000端口下访问会报以下错误:

image.png

此时需要在父应用的index.ejs中引入外部模块react和react-dom

image.png

至此,基于single-spa搭建的包含vue子应用和react子应用的微前端应用就完成了