【qiankun】使用总结

2024-08-29 07:36
文章标签 总结 使用 qiankun

本文主要是介绍【qiankun】使用总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主应用

主应用使用的技术栈:Angular 18 + Antd

微应用

微应用使用的技术栈:React 18 + Antd

  • 创建子应用
// 安装angular CLI(如果本地已安装可忽略)
npm install -g @angular/cli// 创建子应用
ng new my-app-name
  • 配置子应用
  1. 安装插件 @angular-builders/custom-webpack
npm i @angular-builders/custom-webpack 
  1. 在根目录增加 custom-webpack.config.js文件
    在这里插入图片描述
const appName = require('./package.json').name;
module.exports = {devServer: {headers: {'Access-Control-Allow-Origin': '*',},},output: {library: `${appName}-[name]`,libraryTarget: 'umd',chunkLoadingGlobal: `webpackJsonp_${appName}`, // webpack 5 需要把 jsonpFunction 替换成 chunkLoadingGlobal},
};
  1. 在app文件夹下新增 app.module.ts文件和删除 app.config.ts文件
    在这里插入图片描述
    app.module.ts
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app.routes';
import { CustomerRefundComponent } from './customer-refund/customer-refund.component';@NgModule({declarations: [AppComponent,],imports: [BrowserModule,AppRoutingModule, CustomerRefundComponent],bootstrap: [AppComponent],providers: []
})
export class AppModule {}
  1. 创建新模块,然后在app.routes.ts中配置路由

app.routes.ts

import { RouterModule, Routes } from '@angular/router';
import { CustomerRefundComponent } from './customer-refund/customer-refund.component';
import { NgModule } from '@angular/core';
import { APP_BASE_HREF } from '@angular/common';export const routes: Routes = [{path: 'customer-refund/add', component: CustomerRefundComponent // 新模块路由},
];@NgModule({imports: [RouterModule.forRoot(routes)],exports: [RouterModule],providers: [{ provide: APP_BASE_HREF, useValue: (window as any).__POWERED_BY_QIANKUN__ ? '/apps/raise/mycustomer' : '/' }]
})
export class AppRoutingModule {}
  1. 修改 index.html 、app.component.html和app.component.ts的内容
    在这里插入图片描述
  • index.html 给app-root添加唯一标识 mycustomerroot
<app-root id="mycustomerroot"></app-root>
  • app.component.html 删除不需要的内容,保留路由入口
<router-outlet />
  • app.component.ts 注释或者删除 standalone 和 imports属性,selector属性值添加标签id
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';@Component({selector: 'app-root #mycustomerroot', // 添加标签id// standalone: true, // 注释// imports: [RouterOutlet], //注释templateUrl: './app.component.html',styleUrl: './app.component.scss'
})
export class AppComponent {title = 'MyCustomer';
}
  1. 修改 main.js内容
    在这里插入图片描述
import { AppModule } from './app/app.module';
import { NgModuleRef } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';// 删除或者注释
// bootstrapApplication(AppComponent, appConfig)
//   .catch((err) => console.error(err));// 以下内容为新增内容
let app: void | NgModuleRef<AppModule>;
async function render(props?: any) {app = await platformBrowserDynamic().bootstrapModule(AppModule, { ngZone: (window as any).ngZone }).catch((err) => console.error(err));console.log(`子应用数据接收`, props);
}if (!(window as any).__POWERED_BY_QIANKUN__) {render();
}export async function bootstrap(props: Object) {console.log(props);
}export async function mount(props: Object) {render(props);
}export async function unmount(props: Object) {console.log(props);// @ts-ignoreapp.destroy();
}
  1. 修改angular.json文件
    architect > build > builder 和 architect > serve > builder 的值改为我们安装的插件,将我们的打包配置文件加入到 [packageName] > architect > build > options。
    在这里插入图片描述
"architect": {"build": {"builder": "@angular-builders/custom-webpack:browser","options": {"customWebpackConfig": {"path": "./custom-webpack.config.js"},.......},"main": "src/main.ts", // 参数名改成main 不然会报错找不到入口文件},....."serve": {"builder": "@angular-builders/custom-webpack:dev-server",......},}
  1. 修改 package.json文件
    在这里插入图片描述
"start": "ng serve --port 4303 --open",
  1. 启动子应用,自测是否运行成功

这篇关于【qiankun】使用总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117242

相关文章

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Spring @RequestMapping 注解及使用技巧详解

《Spring@RequestMapping注解及使用技巧详解》@RequestMapping是SpringMVC中定义请求映射规则的核心注解,用于将HTTP请求映射到Controller处理方法... 目录一、核心作用二、关键参数说明三、快捷组合注解四、动态路径参数(@PathVariable)五、匹配请

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

Java中的record使用详解

《Java中的record使用详解》record是Java14引入的一种新语法(在Java16中成为正式功能),用于定义不可变的数据类,这篇文章给大家介绍Java中的record相关知识,感兴趣的朋友... 目录1. 什么是 record?2. 基本语法3. record 的核心特性4. 使用场景5. 自定

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示