基于qiankun搭建angular15 hash URL微前端项目入门实践

基础环境

实践日期:2023-02-20

ng version

Angular CLI: 15.1.6
Node: 18.14.1
Package Manager: npm 9.3.1
OS: win32 x64

Angular: 15.1.5

设置npm镜像源

npm config set registry https://registry.npmmirror.com/

主应用

创建项目,命名为main,启用路由,设置样式格式为css

安装qiankun,实践版本:qiankun@2.9.3

ng new main --routing --style css
cd main
npm i qiankun -S

创建空路由组件:src/app/empty-route/empty-route.component.ts

import { Component } from '@angular/core';

@Component({
  selector: 'main-empty-route',
  template: '',
})
export class EmptyRouteComponent { }

设置路由:src/app/app-routing.module.ts

在根模块的 RouterModule.forRoot() 的第二个参数中传入一个带有 useHash: true 的对象

回到基于 HashLocationStrategy 的传统方式,改写了默认的路由策略(PathLocationStrategy)

import { EmptyRouteComponent } from './empty-route/empty-route.component';

const routes: Routes = [
  { path: 'micro1', component: EmptyRouteComponent },
];

@NgModule({
  imports: [RouterModule.forRoot(routes, { useHash: true })],

添加链接和容器:src/app/app.component.html

注意 routerLink="/micro1" 根据 HashLocationStrategy 路由策略渲染成 href="#/micro1"

<div class="content" role="main"><!-- 以下是新增内容 -->
  <a routerLink="/">跳转主应用</a>
  <a routerLink="/micro1">跳转微应用</a>
  <div id="container" style="width: 100%; height: 200px; margin: 16px 0; border: solid; overflow: auto;"></div>

注册微应用并启动:src/app/app.component.ts

注意 activeRule: '#/micro1'

import { registerMicroApps, start } from 'qiankun';

  title = 'main'; // 以下是新增内容
  constructor() {
    registerMicroApps([
      {
        name: 'micro1',
        entry: 'http://localhost:4201/',
        container: '#container',
        activeRule: '#/micro1',
      },
    ]);
    start();
  }

启动应用

npm start

微应用

创建项目,命名为micro1,启用路由,设置样式格式为css,设置选择器前缀为micro1

设置选择器前缀是必要的,否则会与主应用根标签(app-root)混淆,导致主应用异常

添加项目模板single-spa-angular,实践版本:single-spa-angular@8.0.1

过程中会出现3个问题,如下回答

安装依赖,以满足single-spa-angular的需要

ng new micro1 --routing --style css --prefix micro1
cd micro1
ng add single-spa-angular

Would you like to proceed? (Y/n) Y
Does your application use Angular routing? (Y/n) Y
What port should your project run on? (4200) 4201

npm i

创建环境配置:src/environments/environment.ts

export const environment = {
    production: false,
};

设置基路径及路由策略:src/app/app-routing.module.ts

设置基路径是必要的,微应用的基路径不能是默认的根路径(/)且不能与其他微应用重复

在根模块的 RouterModule.forRoot() 的第二个参数中传入一个带有 useHash: true 的对象

回到基于 HashLocationStrategy 的传统方式,改写了默认的路由策略(PathLocationStrategy)

基路径 /micro1 根据 HashLocationStrategy 路由策略渲染成 #/micro1

import { APP_BASE_HREF } from '@angular/common';

@NgModule({
  providers: [{provide: APP_BASE_HREF, useValue: '/micro1'}],
  imports: [RouterModule.forRoot(routes, { useHash: true })],

启动应用

npm run serve:single-spa:micro1

访问

http://localhost:4200/

跳转主应用:http://localhost:4200/#/

跳转微应用:http://localhost:4200/#/micro1

链接

基于qiankun搭建angular15 hash URL微前端项目入门实践_TodayCoding的博客-CSDN博客

代码

angular15-hash · master · TodayCoding / Qiankun study examples · GitCode

相关

基于qiankun搭建angular15微前端项目入门实践_TodayCoding的博客-CSDN博客

基于qiankun搭建ng-alain15微前端项目入门实践_TodayCoding的博客-CSDN博客

基于qiankun搭建ng-alain15微前端项目示例实践_TodayCoding的博客-CSDN博客

基于qiankun搭建vue3 webpack ts微前端项目入门实践_TodayCoding的博客-CSDN博客

基于qiankun搭建vue3 webpack ts无懒加载微前端项目入门实践_TodayCoding的博客-CSDN博客

基于qiankun搭建element plus webpack微前端项目入门实践_TodayCoding的博客-CSDN博客

基于qiankun搭建react18微前端项目入门实践_TodayCoding的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值