无界微前端框架(Wujie)快速入门指南

无界微前端框架(Wujie)快速入门指南

wujie 极致的微前端框架 wujie 项目地址: https://gitcode.com/gh_mirrors/wu/wujie

什么是无界微前端框架

无界(Wujie)是一款轻量级的微前端解决方案,它能够帮助开发者轻松实现多个独立前端应用的集成与协同工作。与传统的iframe方案相比,无界提供了更好的性能和更灵活的集成方式,同时保持了子应用的独立性。

主应用集成步骤

1. 安装与引入

首先需要在主应用中引入无界框架的核心模块:

import { bus, setupApp, preloadApp, startApp, destroyApp } from "wujie";

对于Vue或React项目,可以直接使用对应的封装组件,简化集成流程。

2. 配置子应用参数

使用setupApp方法可以预先设置子应用的默认参数,避免重复配置:

setupApp({
  name: "subApp1",  // 子应用唯一标识
  url: "https://subapp.example.com",  // 子应用地址
  exec: true,  // 是否执行子应用脚本
  el: "#container",  // 挂载容器
  sync: true  // 是否同步路由
});

3. 预加载优化

为了提高用户体验,可以使用preloadApp预先加载子应用资源:

preloadApp({ name: "subApp1" });

4. 启动子应用

当需要显示子应用时,调用startApp方法:

startApp({ name: "subApp1" });

子应用改造指南

无界对子应用的改造要求极低,在大多数情况下,子应用几乎不需要任何修改即可集成。

跨域配置

由于子应用资源将在主应用域名下加载,需要确保子应用服务器配置了正确的CORS策略。以下是一个Node.js服务器的示例配置:

app.use((req, res, next) => {
  res.set({
    "Access-Control-Allow-Credentials": true,
    "Access-Control-Allow-Origin": req.headers.origin || "*",
    "Access-Control-Allow-Headers": "X-Requested-With,Content-Type",
    "Access-Control-Allow-Methods": "PUT,POST,GET,DELETE,OPTIONS",
    "Content-Type": "application/json; charset=utf-8",
  });
  next();
});

运行模式适配

无界支持三种运行模式,不同模式下子应用的改造要求也不同:

  1. 保活模式:子应用无需任何改造
  2. 重建模式:子应用无需任何改造
  3. 单例模式:需要添加生命周期钩子

生命周期改造示例

对于单例模式,需要在子应用中添加挂载和卸载的生命周期函数:

Vue 2.x 改造
if (window.__POWERED_BY_WUJIE__) {
  let instance;
  window.__WUJIE_MOUNT = () => {
    const router = new VueRouter({ routes });
    instance = new Vue({ router, render: (h) => h(App) }).$mount("#app");
  };
  window.__WUJIE_UNMOUNT = () => {
    instance.$destroy();
  };
} else {
  new Vue({ router: new VueRouter({ routes }), render: (h) => h(App) }).$mount("#app");
}
Vue 3.x 改造
if (window.__POWERED_BY_WUJIE__) {
  let instance;
  window.__WUJIE_MOUNT = () => {
    const router = createRouter({ history: createWebHistory(), routes });
    instance = createApp(App);
    instance.use(router);
    instance.mount("#app");
  };
  window.__WUJIE_UNMOUNT = () => {
    instance.unmount();
  };
} else {
  createApp(App).use(createRouter({ history: createWebHistory(), routes })).mount("#app");
}
React 改造
if (window.__POWERED_BY_WUJIE__) {
  window.__WUJIE_MOUNT = () => {
    ReactDOM.render(
      <React.StrictMode>
        <App />
      </React.StrictMode>,
      document.getElementById("root")
    );
  };
  window.__WUJIE_UNMOUNT = () => {
    ReactDOM.unmountComponentAtNode(document.getElementById("root"));
  };
} else {
  ReactDOM.render(
    <React.StrictMode>
      <App />
    </React.StrictMode>,
    document.getElementById("root")
  );
}
特殊处理:Vite项目

由于Vite采用异步加载机制,需要特别注意主动调用无界的渲染函数:

if (window.__POWERED_BY_WUJIE__) {
  let instance;
  window.__WUJIE_MOUNT = () => {
    const router = createRouter({ history: createWebHistory(), routes });
    instance = createApp(App);
    instance.use(router);
    instance.mount("#app");
  };
  window.__WUJIE_UNMOUNT = () => {
    instance.unmount();
  };
  window.__WUJIE.mount(); // 主动调用防止异步问题
} else {
  createApp(App).use(createRouter({ history: createWebHistory(), routes })).mount("#app");
}

最佳实践建议

  1. 预加载策略:对于核心子应用,建议在主应用初始化时进行预加载,提升用户体验
  2. 模式选择:根据业务场景选择合适的运行模式,平衡性能和内存消耗
  3. 错误处理:为子应用加载添加适当的错误处理和降级方案
  4. 性能监控:监控子应用加载时间和运行性能,持续优化

通过以上步骤,您可以轻松地将无界微前端框架集成到您的项目中,实现多个前端应用的协同工作。

wujie 极致的微前端框架 wujie 项目地址: https://gitcode.com/gh_mirrors/wu/wujie

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

### 微前端Wujie框架的学习路径与最佳实践 #### 了解基础概念 为了有效利用无界微前端框架 Wujie 进行开发,理解其核心理念至关重要。该框架旨在通过模块化的方式拆分大型单体应用程序为多个独立部署的小型应用,从而提高项目的可维护性和扩展性[^1]。 #### 掌握安装配置流程 熟悉如何设置环境并集成 Wujie 到现有项目中是必要的第一步。通常涉及创建主应用以及至少一个子应用,并确保两者能够无缝协作运行。这一步骤的具体操作可以参照官方文档中的快速入门指南来完成。 #### 实践案例研究 深入探讨实际应用场景有助于加深对这一技术的理解。例如,在电商网站上采用微前端架构可以使不同部门负责各自业务逻辑对应的页面或功能组件;而像新闻门户这样的平台则可以通过这种方式更灵活地管理和更新内容板块。这些实例展示了微前端模式下各部分之间相互作用的可能性及其带来的好处。 #### 关键特性解析 - **跨域加载**:支持从不同的源加载子应用,这对于分布式团队合作特别有用。 - **样式隔离**:防止全局 CSS 影响到其他子应用,保持界面一致性的同时减少了潜在冲突的风险。 - **数据共享机制**:提供了一套有效的解决方案用于解决主应用同各个子应用间的数据交互需求。 ```javascript // 主应用注册子应用示例代码 import { registerMicroApps, start } from 'wujie'; registerMicroApps([ { name: "app1", // 子应用名称 entry: "//localhost:7101", // 子应用入口地址 container: "#container-app1", // 容器节点的选择器或者DOM对象 activeRule: "/app1" // 激活规则 } ]); start(); ``` #### 性能优化建议 随着系统的增长,性能成为不可忽视的因素之一。针对此情况,可以从以下几个方面入手改进: - 减少不必要的网络请求次数; - 合理规划懒加载策略以加快首屏渲染速度; - 对公共资源文件进行压缩合并处理等措施提升整体效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邹岩讳Sally

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值