无界(wujie)微前端项目搭建,nginx线上部署,pnpm一键安装依赖、启动应用,git代码仓库存放方式

这里写自定义目录标题

1. 创建项目

主应用: vue3+vite3+element-plus2

子应用: react18+vite3+antd5

项目目录

布局选择

主应用顶部菜单切换子应用,子应用中根据window.__POWERED_BY_WUJIE__ 变量来动态选择layout方案。

主应用

  1. 安装wujie依赖
javascript 复制代码
// vue3 框架
npm i wujie-vue3 -S

// vue2 框架
npm i wujie-vue2 -S
  1. main.js引入wujie
javascript 复制代码
import WujieVue from 'wujie-vue3'
import hostMap from './hostMap'
import lifecycles from './lifecycle'

const {setupApp, preloadApp, bus} = WujieVue
const app = createApp(App)
app.use(WujieVue).use(router).mount('#app')

setupApp({
    name: 'platformManagement',
    url: hostMap('//localhost:7501/'),
    exec: true,
    // props,
    alive: true,
    ...lifecycles
})

setupApp({
    name: 'systemManagement',
    url: hostMap('//localhost:7502/'),
    exec: true,
    // props,
    alive: true,
    ...lifecycles
})

/** 预加载(空闲时才会加载)  */
 preloadApp({
        name: 'platformManagement',
        url: hostMap('//localhost:7501/'),
    })
 preloadApp({
        name: 'systemManagement',
        url: hostMap('//localhost:7502/'),
    })       
  1. hostMap.js
  2. 路由配置(以子应用platformManagement为例)

router.js中

对应的子应用组件中

主应用菜单中配置对应子应用路由跳转

html 复制代码
<el-menu-item index="2" route="/platformManagement">
    <span>平台管理</span>
</el-menu-item>

子应用

子应用中安装依赖wujie-react, vite.config.tsvite.config.ts中设置启动端口号,需跟主应用hostMap中对应的一致。

wujie对子应用侵入较少,只需根据宿主环境动态选择layout方案,就可以接入进来。(如有跨域等问题需另外处理)

2. pnpm包管理,一键安装、启动、打包

pnpm一键安装依赖

项目根目录 pnpm init ,新建pnpm-workspace.yaml 文件,如下图配置主应用及子应用目录。此时在根目录下 执行pnpm i命令即可一键安装所有项目的依赖。

npm-run-all 一键启动、打包

首先在根目录下安装npm-run-all,在package.json中做如下配置。注意脚本命令后面的文件夹及子应用名称,后期如添加子应用需手动在这里添加对应脚本命令。

此时在根目录下运行npm run startnpm run build即可一键启动应用和一键打包(构建目录名称可单独在子应用中配置)

3. nginx线上部署

主应用中

router配置中的path与hostMap中的子路由地址不能完全相等,否则nginx会出现资源加载异常问题。

子应用中

以上图中platform-management为例,打包根路径与路由根路径都需设置成 /platform-management/。 (React-routerV6版本设置路由根路径时需要去掉最后的斜杠,/platform-management

子应用中通过环境变量配置打包路径(react-routerV6)

nginx文件目录及配置

git代码存放方式

  1. .gitignore配置
    这里用的是聚合库的方式,主应用放在聚合库里,每个子应用都有自己单独的仓库。聚合库的.gitignore文件里添加子应用文件夹名称。(这里的两个子应用需要跟随主应用库,如需单独存放,去掉后两行即可。)
  2. 如下图,在package.json文件中创建脚本文件clone-all.sh,在sh文件中配置下子应用的仓库地址即可,后期如新增子应用,也需要在这里添加仓库地址
相关推荐
崔庆才丨静觅6 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60616 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了6 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅6 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅7 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
李少兄7 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
崔庆才丨静觅7 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment7 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅8 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊8 小时前
jwt介绍
前端