>웹 프론트엔드 >JS 튜토리얼 >React를 사용한 마이크로 프론트엔드: 종합 가이드

React를 사용한 마이크로 프론트엔드: 종합 가이드

Patricia Arquette
Patricia Arquette원래의
2025-01-06 22:50:43808검색

Micro-Frontends with React: A Comprehensive Guide

웹 애플리케이션이 복잡해짐에 따라 확장 가능하고 유지 관리 가능한 아키텍처의 필요성이 무엇보다 중요해졌습니다. 마이크로 프런트엔드는 모놀리식 프런트엔드 애플리케이션을 더 작고 관리 가능한 조각으로 분해하여 솔루션을 제공합니다. 이 게시물에서는 마이크로 프런트엔드의 개념, React를 사용하여 이를 구현하는 방법, 개발 프로세스에 가져오는 이점에 대해 살펴보겠습니다.

마이크로 프론트엔드란 무엇입니까?

마이크로 프런트엔드는 마이크로서비스 아키텍처를 프런트엔드로 확장합니다. 단일 모놀리식 애플리케이션 대신 마이크로 프런트엔드를 사용하면 애플리케이션의 개별 기능이나 섹션을 독립적으로 개발하고 배포할 수 있습니다. 각 팀은 애플리케이션의 특정 부분을 소유할 수 있으므로 확장성과 유지 관리성이 향상됩니다.

마이크로 프론트엔드의 주요 특징:

독립적으로 배포 가능: 각 마이크로 프런트엔드는 독립적으로 개발, 테스트 및 배포가 가능합니다.
기술 불가지론: 팀은 다양한 마이크로 프런트엔드에 대해 다양한 기술을 선택할 수 있어 유연성이 보장됩니다.
팀 자율성: 팀은 독립적으로 작업하여 종속성과 병목 현상을 줄일 수 있습니다.

마이크로 프론트엔드를 사용하는 이유는 무엇입니까?

확장성: 애플리케이션이 성장함에 따라 마이크로 프런트엔드를 사용하면 여러 팀에 걸쳐 개발 규모를 확장할 수 있습니다.
더 빠른 개발: 독립적인 배포는 더 빠른 릴리스 주기와 출시 시간 단축을 의미합니다.
유지관리성 향상: 코드베이스가 작을수록 관리, 테스트 및 리팩토링이 더 쉽습니다.

React로 마이크로 프론트엔드 구현하기

  • 마이크로 프런트엔드 아키텍처 선택 마이크로 프런트엔드를 구현하는 데는 여러 가지 접근 방식이 있습니다. 다음은 널리 사용되는 두 가지 방법입니다.

Iframe 기반: 각 마이크로 프런트엔드는 iframe에 로드됩니다. 이 접근 방식은 강력한 고립감을 제공하지만 의사소통 및 스타일링에 어려움을 겪을 수 있습니다.

JavaScript 번들: 각 마이크로 프런트엔드는 단일 애플리케이션에 로드되는 별도의 JavaScript 번들입니다. 이 접근 방식을 사용하면 더 나은 통합과 공유 상태 관리가 가능합니다.

  • 마이크로 프런트엔드 애플리케이션 설정 JavaScript 번들 접근 방식을 사용하여 간단한 예제를 만들어 보겠습니다. 다양한 애플리케이션 간에 코드를 공유할 수 있는 강력한 기능인 Webpack Module Federation을 사용하겠습니다.

1단계: 두 개의 React 애플리케이션 생성
두 개의 별도 React 애플리케이션을 생성합니다. 하나는 호스트용이고 다른 하나는 마이크로 프런트엔드용입니다.

npx create-react-app host-app
npx create-react-app micro-frontend

2단계: Webpack 모듈 연합 구성
마이크로 프런트엔드 애플리케이션에서 필요한 종속성을 설치합니다.

npx create-react-app host-app
npx create-react-app micro-frontend

그런 다음 webpack.config.js를 수정하여 마이크로 프런트엔드 구성 요소를 노출합니다.

npm install --save-dev webpack webpack-cli webpack-dev-server @module-federation/webpack

호스트 앱에서 마이크로 프런트엔드를 사용하도록 구성합니다.

// micro-frontend/webpack.config.js
const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");

module.exports = {
  // ... other configurations
  plugins: [
    new ModuleFederationPlugin({
      name: "micro_frontend",
      filename: "remoteEntry.js",
      exposes: {
        "./Button": "./src/Button", // Expose the Button component
      },
      shared: {
        react: { singleton: true },
        "react-dom": { singleton: true },
      },
    }),
  ],
};

3단계: 마이크로 프런트엔드 로드
이제 호스트 앱에서 마이크로 프런트엔드 구성 요소를 동적으로 로드할 수 있습니다.

// host-app/webpack.config.js
const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");

module.exports = {
  // ... other configurations
  plugins: [
    new ModuleFederationPlugin({
      name: "host",
      remotes: {
        micro_frontend: "micro_frontend@http://localhost:3001/remoteEntry.js",
      },
      shared: {
        react: { singleton: true },
        "react-dom": { singleton: true },
      },
    }),
  ],
};
  • 애플리케이션 실행 두 애플리케이션을 서로 다른 포트에서 실행해야 합니다. 예를 들어 포트 3001에서 마이크로 프런트엔드를 실행하고 포트 3000에서 호스트 앱을 실행할 수 있습니다.
// host-app/src/App.js
import React, { useEffect, useState } from "react";

const App = () => {
  const [Button, setButton] = useState(null);

  useEffect(() => {
    const loadButton = async () => {
      const { Button } = await import("micro_frontend/Button");
      setButton(() => Button);
    };
    loadButton();
  }, []);

  return (
    <div>
      <h1>Host Application</h1>
      {Button ? <Button label="Click Me!" /> : <p>Loading...</p>}
    </div>
  );
};

export default App;

이제 http://localhost:3000으로 이동하면 호스트 애플리케이션이 마이크로 프런트엔드에서 버튼을 로드하는 것을 볼 수 있습니다.

마이크로 프런트엔드는 복잡한 프런트엔드 애플리케이션을 독립적으로 배포할 수 있는 작은 조각으로 나누어 관리하는 강력한 방법을 제공합니다. React와 Webpack Module Federation과 같은 도구를 활용하면 팀 자율성을 강화하고 개발 속도를 높이는 확장 가능한 아키텍처를 만들 수 있습니다. 마이크로 프런트엔드 채택을 고려할 때 이로 인해 발생하는 복잡성과 이점을 비교하고 프로젝트 요구 사항에 가장 적합한 접근 방식을 선택하세요.

위 내용은 React를 사용한 마이크로 프론트엔드: 종합 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.