微前端:single spa的相关使用,结合angular

 一下大部分内容截取自chatgpt,在很大程度上减少了学习成本。

Single-spa是一个用于构建微前端架构的JavaScript框架。它可以让你在同一个页面上集成多个独立的JavaScript应用程序,这些应用程序可以使用不同的框架和技术栈来编写,比如React、Angular、Vue等。Single-spa提供了一些API和工具,帮助你管理这些应用程序的生命周期、路由、状态共享等方面的问题。使用Single-spa可以让你的应用程序更加灵活、可扩展、易于维护。

--- 来自ChatGPT

使用步骤:

  1. 安装Single-spa:你可以使用npm或yarn来安装Single-spa。

  2. 创建根应用程序:根应用程序是Single-spa的主应用程序,它负责加载和管理其他子应用程序。你需要在根应用程序中注册子应用程序,并且定义路由和状态管理等功能。

  3. 创建子应用程序:子应用程序是Single-spa的独立应用程序,它可以使用不同的框架和技术栈来编写。你需要为每个子应用程序创建一个配置文件,指定它的名称、路由、入口文件等信息。

  4. 注册子应用程序:在根应用程序中,你需要使用Single-spa提供的API来注册子应用程序。注册子应用程序后,Single-spa将会自动加载和卸载子应用程序,并且管理它们的生命周期。

  5. 运行应用程序:最后,你需要启动根应用程序,让Single-spa开始加载和运行应用程序。你可以在浏览器中访问根应用程序的URL,然后Single-spa将会自动加载和渲染子应用程序。

single spa的生命周期是什么?怎么用?有相关例子吗

Single-spa的生命周期包括以下几个阶段:

  1. bootstrap:在这个阶段,Single-spa会加载并初始化子应用程序的代码,但是不会渲染它们。

  2. mount:在这个阶段,Single-spa会将子应用程序渲染到页面上,并且将其挂载到指定的DOM元素上。

  3. update:在这个阶段,Single-spa会检查子应用程序是否需要更新,如果需要,就会重新加载和渲染子应用程序。

  4. unmount:在这个阶段,Single-spa会将子应用程序从页面上卸载,并且销毁它们的代码和状态。

你可以使用Single-spa提供的API来管理子应用程序的生命周期,比如使用registerApplication方法来注册子应用程序,并且指定其生命周期钩子函数。下面是一个例子:

import { registerApplication, start } from 'single-spa';

registerApplication(
  'app1',
  () => import('./app1'),
  () => location.pathname.startsWith('/app1')
);

registerApplication(
  'app2',
  () => import('./app2'),
  () => location.pathname.startsWith('/app2')
);

start();

在这个例子中,我们使用registerApplication方法来注册两个子应用程序(app1和app2),并且指定它们的入口文件和路由。每个子应用程序都有一个生命周期钩子函数,可以在对应的阶段执行一些操作。比如在子应用程序的入口文件中,可以定义如下的生命周期钩子函数:

export const bootstrap = () => {
  console.log('app1 is bootstrapping');
};

export const mount = () => {
  console.log('app1 is mounting');
};

export const unmount = () => {
  console.log('app1 is unmounting');
};

这些生命周期钩子函数可以在子应用程序的代码中定义,Single-spa会在对应的阶段自动调用它们。比如在子应用程序的入口文件中,可以这样定义: 

import { bootstrap, mount, unmount } from './lifecycle';

export const bootstrap = bootstrap;
export const mount = mount;
export const unmount = unmount;

这样,当子应用程序被加载和渲染时,Single-spa会自动调用对应的生命周期钩子函数,并且执行一些自定义的操作。

结合Angular使用

  1. 首先,你需要创建一个Angular 8应用程序,可以使用Angular CLI来创建:
  2. 然后,你需要将Angular应用程序转换为Single-spa应用程序,可以使用single-spa-angular CLI插件来完成:
    ng add single-spa-angular
    

    这个命令会自动安装和配置必要的依赖项和文件,将Angular应用程序转换为Single-spa应用程序。

  3. 接下来,你需要为Single-spa应用程序创建一个配置文件,指定其名称、路由和入口文件等信息。在项目的根目录下创建一个名为single-spa.config.ts的文件,内容如下:
    import { NgSingleSpaConfig } from 'ng-single-spa';
    
    const ngConfig: NgSingleSpaConfig = {
      selector: 'my-app',
      baseHref: '/my-app',
      bootstrapFunction: () => import('./src/main.ts').then(module => module.default),
      template: '',
      Router,
      NavigationStart,
    };
    
    export default ngConfig;
    

    在这个配置文件中,我们指定了应用程序的名称(my-app)、路由(/my-app)、入口文件(./src/main.ts)等信息。我们还指定了Angular应用程序的根组件()和路由器(Router)。

  4. 最后,你需要在根应用程序中注册和加载Single-spa应用程序。在根应用程序的入口文件中,可以这样定义:
    import { registerApplication, start } from 'single-spa';
    import ngConfig from './single-spa.config';
    
    registerApplication({
      name: 'my-app',
      app: () => System.import('my-app'),
      activeWhen: ['/my-app'],
      customProps: {
        domElement: document.getElementById('my-app'),
      },
    });
    
    start();
    

    在这个代码中,我们使用registerApplication方法来注册Single-spa应用程序,并且指定其名称、入口文件、路由和DOM元素等信息。我们还调用了start方法来启动Single-spa应用程序。

qiankun和single spa的关系?

Qiankun和Single-spa都是用于构建微前端架构的JavaScript框架。

Single-spa是一个比较早期的微前端框架,它提供了一些API和工具,帮助你在同一个页面上集成多个独立的JavaScript应用程序,这些应用程序可以使用不同的框架和技术栈来编写。Single-spa的设计思想是“应用程序为王”,它将每个应用程序视为独立的模块,可以独立开发、测试和部署。

Qiankun是一个相对较新的微前端框架,它是由蚂蚁金服开发的。Qiankun的设计思想是“应用程序是服务”,它将每个应用程序视为一个服务,可以通过HTTP或WebSocket等协议进行通信。Qiankun提供了一些API和工具,帮助你在同一个页面上集成多个独立的JavaScript应用程序,这些应用程序可以使用不同的框架和技术栈来编写。

虽然Qiankun和Single-spa有一些相似之处,但它们也有一些不同之处。Qiankun提供了更多的功能和工具,比如基于浏览器的路由、子应用程序之间的通信、应用程序的独立部署等。Qiankun还提供了更好的性能和安全性,可以帮助你更好地构建复杂的前端应用程序。

你可能感兴趣的:(微前端,前端,javascript,开发语言)