【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. 启动子应用,自测是否运行成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1523798.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

保姆级教程:Dupay从注册到充值开卡全过程,可开GPT Plus、可绑定GPT充值API余额

前言 想要购买GPT Plus&#xff0c;或者给GPT充值&#xff0c;绑定国内visa信用卡&#xff0c;会被拒&#xff0c;于是便问问度娘&#xff0c;找到了一篇关于注册虚拟卡的教程&#xff0c;搬过来顺便修改下&#xff01; 应用场景 1、Depay Master Visa卡支持绑定宝、微、美外…

软件测试基础知识 + 面试理论(超详细!)

一、什么是软件&#xff1f; 软件是计算机系统中的程序和相关文件或文档的总称。 二、什么是软件测试&#xff1f; 说法一&#xff1a;使用人工或自动的手段来运行或测量软件系统的过程&#xff0c;以检验软件系统是否满足规定的要求&#xff0c;并找出与预期结果之间的差异…

【网络安全】服务基础第一阶段——第十一节:Windows系统管理基础----PKI技术与应用

目录​​​​​​​ 一、加密技术 1.1 基本保密通信模型 1.2 密码学发展 1.2.1 古典密码学&#xff08;1949年前&#xff09; 1.2.2 近代密码学&#xff08;1949&#xff5e;1975年&#xff09; 1.2.3 现代密码学&#xff08;1976年以后&#xff09; 1.3 古典密码 1.3.…

月考成绩如何私密发布?教程来啦!

月考结束&#xff0c;老师们总是忙得不可开交。需要将每一份成绩单仔细核对&#xff0c;然后逐一私信给每位学生的家长。这个过程不仅耗时耗力&#xff0c;而且容易出错。家长们也常常因为等待成绩而焦虑不安。但现在有了一种更高效、更私密的方法来发布成绩——易查分小程序。…

GatewayWorker框架的详解和应用

一、介绍 1. 简介 GatewayWorker基于Workerman开发的一个项目框架&#xff0c;用于快速开发TCP长连接应用&#xff0c;例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等 GatewayWorker使用经典的Gateway和Worker进程模型。Gateway进程负责维持客户端连接…

烟雾报警器可以节能与守护并存吗?| 合宙功耗分析仪Air9000P实测

有多少人跟我一样&#xff0c;每次抬头看到天花板上那个长年累月默默站岗的烟雾报警器&#xff0c; 总会想&#xff1a;它真的在工作吗&#xff1f;电量到底能撑多久呢&#xff1f; 不如&#xff0c;动手测一测功耗&#xff01; 烟雾报警器通过内置的传感器实时感知环境中的烟…

Vue3安装Element Plus

文章目录 安装使用包管理器安装配置&#xff1a;完整引入按需引入&#xff1a; 使用&#xff1a; 以下将参考Element Plus官网 一个 Vue 3 UI 框架 | Element Plus (element-plus.org)进行 安装 在创建好的项目文件控制台下安装&#xff1a; 使用包管理器 我们建议您使用包…

UE4_后期处理_后期处理材质及后期处理体积二

效果&#xff1a; 步骤&#xff1a; 1、创建后期处理材质,并设置参数。 2、回到主界面&#xff0c;找到需要发光的物体的细节面板。 渲染自定义深度通道&#xff0c;默认自定义深度模具值为10&#xff08;需要修改此值&#xff0c;此值影响物体的亮度&#xff09;。 3、添加…

git clone 别人的项目上传到自己的Gitee或者github仓库

git clone别人的项目 git clone https://github.com/wohuweixiya/yft-design.git 进入该项目内&#xff0c;删除原有的.git信息 rm -r .git 初始化.git git init 将本地代码添加到仓库 git add . git commit -m "提交仓库说明" Github上新建一个和这个clone下来…

AI生产力工具暑期迎来大爆发 极光数据:夸克新增用户规模领先

9月3日&#xff0c;极光旗下月狐数据发布《AI生产力工具暑期发展报告》。数据显示&#xff0c;AI生产力工具在用户侧呈现高速增长态势&#xff0c;总体月活跃用户数量达1.7亿。其中&#xff0c;夸克APP实现暑期新增用户数量行业第一&#xff0c;凭借大模型、数据、场景等优势&a…

netty之实现同步调用

写在前面 源码 。 本文看下netty如何实现同步调用&#xff0c;netty本身是不具备这种能力的&#xff0c;但是我们可以结合juc包的相关工具类来让其具备这种能力。接下来就一起看下吧&#xff01;&#xff01;&#xff01; 1&#xff1a;server 请求和响应对象 package com.…

算法笔试-编程练习-M-01-24

t这套题&#xff0c;偏向灵活&#xff0c;更多的考察了数学、贪心 一、质因数 题目描述 小乖对 gcd (最大公约数) 很感兴趣, 他会询问你t次。 每次询问给出一个大于 1 的正整数 n, 你是否找到一个数字m(2 ≤m ≤ n)&#xff0c;使得 gcd(n,m)为素数. 注&#xff1a;原题为给…

智能优化算法-北方苍鹰优化算法(NGO)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 北方苍鹰优化算法 (Northern Goshawk Optimizer, NGO) 是一种基于群体智能的元启发式优化算法&#xff0c;它模拟了北方苍鹰&#xff08;Northern Goshawk&#xff09;的捕食行为、领地行为以及社交互动&#x…

网络攻击全解析:主动、被动与钓鱼式攻击的深度剖析

在当今这个互联网高度普及与深度融合的时代&#xff0c;网络攻击&#xff0c;这一赛博空间的隐形威胁&#xff0c;正以前所未有的频率和复杂度挑战着网络安全乃至国家安全的底线。为了更好地理解并防范这些威胁&#xff0c;本文将深入剖析网络攻击的主要类型——主动攻击、被动…

2024-8-28作业C++/QT

代码&#xff1a; #include <iostream> #include <cstring> #include <array> #include <iomanip> using namespace std; int main() { //array<char,128> a; //array<char,128>::iterator iter; string str; getline(c…

小阿轩yx-Kubernertes日志收集

小阿轩yx-Kubernertes日志收集 前言 在 Kubernetes 集群中如何通过不同的技术栈收集容器的日志&#xff0c;包括程序直接输出到控制台日志、自定义文件日志等 有哪些日志需要收集 日志收集与分析很重要&#xff0c;为了更加方便的处理异常 简单总结一些比较重要的需要收集…

插件千兆网络变压器72PIN应用图片和设计H87202D

华强盛电子导读&#xff1a;前面199中间2643后面0038 千兆4口网络变压器是一种常用于网络通信领域的电子元件&#xff0c;它可以将高频率的信号进行隔离和滤波&#xff0c;保护网络设备免受电磁干扰&#xff0c;同时也能确保信号的稳定传输。这种网络变压器通常具有多个端口&am…

【云原生kubernetes系列之SkyWalking篇】

1、实战案例 1.1单体jar包监控 1.1.1Halo环境准备 注意&#xff1a;Halo需要jdk11以上的版本 apt install -y java-11-openjdk mkdir /apps/halo -p && cd /apps/halo curl -L https://github.com/halo-dev/halo/releases/download/v1.5.4/halo-1.5.4.jar --outpu…

AI创业者必看!免费分享大模型和算法备案的难点解析

大模型和算法的备案&#xff0c;作为人工智能产品进入市场的第一道门槛&#xff0c;对于每一个创业者来说&#xff0c;都是一个必须认真对待的重要环节。备案不仅要求技术的合规性&#xff0c;还强调了数据安全和隐私保护的重要性。创业者在追求技术创新的同时&#xff0c;也需…

9千含读音文件的中文汉语学习ACCESS\EXCEL数据库

现在英语在我们国内是越来越流行&#xff0c;甚至幼儿园都开始Hello了&#xff0c;但是我们也看到越来越多的老外在学我们的汉语、汉字了。而《含读音文件的中文汉语学习ACCESS数据库》就是一份供老外学习汉字汉语的工具。 数据库收集了上万条汉语常用的字词&#xff0c;并且用…