当前位置: 首页 > article >正文

wujie无界微前端框架初使用

先说一下项目需求:将单独的四套系统的登录操作统一放在一个入口页面进行登录,所有系统都使用的是vue3,(不要问我为啥会这样设计,产品说的客户要求)

                                                           

1.主系统下载wujie

我全套都是vue3,所以直接下vue3的

npm i wujie-vue3 -S

不知道官网为什么要把下载依赖单独放这里。。。

官网地址:Vue组件封装 | 无界

2.主系统的main.js中引入wujie

// 导入 WuJie.js 的 Vue3 集成
import WujieVue from "wujie-vue3";
const { bus, setupApp, preloadApp, destroyApp } = WujieVue;
 // 配置子系统入口
setupApp({
  name: 'sub-app',
  url: 'http://localhost:8081', // 子应用的 URL
  attrs: {
    src: 'http://localhost:8081',
  },
});

const app = createApp(App)
app.use(WujieVue);
app.mount('#app')

3.配置子应用入口页面路由并且新建这个页面

router.js文件

新建页面路径

4.pre.vue页面代码

<template>
  <div class="pre">
    <WujieVue
      width="100%"
      height="100%"
      :name="appName"
      :url="appUrl"
      :sync="true"
      :props="appProps"
      :attrs="appAttrs"
      :alive="true"
    />
  </div>
</template>

<script setup>
import { computed } from 'vue';
import { useRoute } from 'vue-router';
import  WujieVue  from 'wujie-vue3';
// 动态获取路由参数,匹配子应用
const appName = '/pre';
const appUrl = 'http://localhost:8081';
const appProps = { user: 'admin' };
const appAttrs = { "data-custom-attr": "example" }; // 自定义属性
</script>

<style lang="scss" scoped>
.pre{
    height: 100%;
}
</style>
主应用已经配置好了,接下来是子应用 

打开子应用的vite.config.js文件

origin和上面主应用的appUrl要一样,开启允许跨域

server: {
      cors: true, // 允许跨域
      port: 8081,
      // host: true,
      host: '0.0.0.0', // 确保可以通过 IP 访问
      origin: 'http://localhost:8081', // 子应用的访问地址(与主应用匹配)对应appUrl
      open: true,
      headers: {
        'Access-Control-Allow-Origin': '*', // 明确允许主应用跨域访问
      },
      proxy: {
        // https://cn.vitejs.dev/config/#server-proxy
        '/dev-api': {
           target: 'http://localhost:8080',
          changeOrigin: true,
          rewrite: (p) => p.replace(/^\/dev-api/, '')
        }
      }
    },

done


http://www.kler.cn/a/465996.html

相关文章:

  • [Qt] 输入控件 | Line | Text | Combo | Spin | Date | Dial | Slider
  • python对mongodb的增删查改
  • 如何使用OpenCV进行抓图-多线程
  • Git 新手无忧:常用命令与错误解决攻略
  • 探索AI在地质科研绘图中的应用:ChatGPT与Midjourney绘图流程与效果对比
  • 【游戏设计原理】47 - 超游戏思维
  • 小程序电商实战:打造高效转化的购物平台
  • 基于RNN模型的心脏病预测(tensorflow实现)
  • 【Block总结】SGE注意力机制
  • linux内核PWM子系统笔记
  • 论文精读:Root Cause Analysis in Microservice Using Neural Granger Causal Discovery
  • 用python重写了座位表生成器
  • 仓库叉车高科技安全辅助设备——AI防碰撞系统N2024G-2
  • 【74HC192减法24/20/72进制】2022-5-17
  • 在 pandas.Grouper() 中,freq 参数用于指定时间频率,它定义了如何对时间序列数据进行分组。freq 的值可以是多种时间单位
  • 发现一个可用的免费docker镜像源
  • AI智能生成PPT,告别手工操作的新选择
  • 安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮
  • MATLAB画柱状图
  • 【Spring学习】为什么Spring中的IOC(控制反转)能够降低耦合性(解耦)?
  • springboot和vue项目前后端交互
  • 竞品分析对于ASO优化的重要性
  • MySql---进阶篇(六)---SQL优化
  • 在 SQL 中获取第m个开始的n条记录方法汇总
  • 亚远景-ASPICE与ISO 26262:汽车软件开发与功能安全的协同作用
  • GitHub Actions 工作流编写指南