모놀리식에서 마이크로 프론트엔드로 - 2부

목차



  • Migrating React Application
  • Migrate to single-spa application
  • Configure Root Config

  • Migrating Angular Application

  • React 애플리케이션 마이그레이션

    To migrate any existing React application I followed this documentation from single-spa 및 또한 이 GitHubrepo에서 완전한 작동 솔루션을 찾을 수 있습니다.
    기존 React 애플리케이션이 이미 있다고 가정합니다.

    단일 스파 애플리케이션으로 마이그레이션

  • Inside your React root folder application, install single-spasingle-spa-react npm 또는 yarn 사용

  • npm i single-spa single-spa-react
    // or with yarn
    yarn add single-spa single-spa-react
    

  • src 폴더 안에 파일을 만들고 이름을 root.app.js로 지정합니다(원하는 이름을 선택할 수 있음).

  • touch src/root.app.js
    

    이 파일 내에서 렌더링할 최상위 React 구성 요소인 루트 구성 요소를 설정합니다. 우리의 경우 App.js 내부의 App Component가 될 것입니다.
    root.app.js 내부의 코드는 다음과 같아야 합니다.





    이 시점이 끝나면 루트 구성 내부에 등록할 수 있는 단일 스파 애플리케이션이 있습니다.

    추가 구성

    Now let's configure our root-config, replace the code inside your index.js file with the code below


    by doing this we are doing several steps, telling the single-spa to register your React application using registerApplication and start the application by calling the start() function.


    이 방법을 사용한 마이그레이션의 이점



    <울>
  • 우리는 같은 것을 사용하고 있습니다 react-script .
  • 현재 진입점인 src/index.js를 가로채기 때문에 웹팩을 처음부터 구성할 필요가 없습니다. 따라서 React 애플리케이션을 eject 웹팩을 재구성할 필요가 없습니다.


  • 같은 스크립트를 사용하여 애플리케이션을 실행할 수 있습니다npm start.



    <시간/>

    Migrating Angular Application

    To migrate any existing Angular application I followed this documentation from single-spa I am assuming you already have an existing Angular application.
    in my case, I am using Angular version 10

    • Inside your root folder run the following command
    ng add single-spa-angular
    

    According to single-spa documentation, this command will:

    • Install single-spa-angular.
    • Generate a main.single-spa.ts in your project src/.
    • Generate single-spa-props.ts in src/single-spa/.
    • Generate asset-url.ts in src/single-spa/.
    • Generate an EmptyRouteComponent in src/app/empty-route/, to be used in app-routing.module.ts.
    • Add an npm script npm run build:single-spa.
    • Add an npm script npm run serve:single-spa.

    and also will:

    • Add single-spa as a dependency, you will need to install it, as it not installed by default, it will be only added to your package.json, you can install it manually
    npm i single-spa
    

    or in your root folder where your package.json located run

    npm i
    

    which will refresh your dependencies tree and install any missing package.

    • Generate extra-webpack.config.js
    • Update build option inside angular.json and use @angular-builders/custom-webpack instead of @angular-devkit/build-angular you will need to install other dependencies by running
    npm i @angular-builders/custom-webpack
    npm i @types/[email protected] --saveDev
    

    Extra Steps to complete the migration

    Some of these steps are not documented in the single-spa documentation, and I figured it out while I was migrating the application

    • Inside app.module.ts file
    import {APP_BASE_HREF} from '@angular/common';
    

    and add this object to the providers array

    {provide: APP_BASE_HREF, useValue: '/'}
    
    • Inside tsconfig.app.json, add node to types array "types": ["node"]

    • In package.json, --deploy-url flag should be set to the host URL, In order for the webpack public path to be correctly set for your assets, see this Stack Overflow answer .

    The result of this migration is a compiled JS file. After finishing the migration you can run the Angular application using this command

    npm run serve:single-spa:angular-app
    

    Which will start a dev server that is serving your js file, which will be located in http://localhost:4200/main.js


    Conclusion



    지금까지 한 일:



    <울>
  • 기존 React 애플리케이션을 마이그레이션했습니다.
  • 핵심 구성 파일을 만들었습니다.
  • 기존 Angular 애플리케이션을 마이그레이션했습니다.


  • 이 Githubrepo에서 완전한 작업 솔루션을 찾을 수 있으며 게시된 각 부분에 따라 업데이트됩니다.



    다음 파트에서는 ​​루트 구성 파일에 Angular 애플리케이션을 등록하는 방법에 대해 자세히 설명합니다.

    좋은 웹페이지 즐겨찾기