React를 사용하여 Micro Frontend 만들기
22223 단어 webdevjavascriptreactmicrofrontend
부인 성명
이 기사는 ModSquad 커뮤니티의 도움으로 작성되었습니다. 관련 라이브 세션은 여기에서 볼 수 있습니다.
소개
안녕하세요, 동료 개발자 여러분!
Angular로 마이크로 프런트엔드 생성을 발견한 우리는 React로 또 다른 세계로 뛰어듭니다. Angular, React 및 Vue.js 프레임워크 각각에 대한 웹 구성 요소 사양을 사용하여 마이크로 프런트엔드를 만들려고 합니다.
React는 마이크로 프런트엔드 소셜 카드를 만들 때 최고의 개발자 경험을 제공합니까? 해 봅시다!
반응 앱 만들기
React는 create React applications을 사용하여 Create React App에 대한 간단한 방법을 제공합니다.
이전 블로그에서 본 것처럼 npm이 설치되어 있어야 합니다. 그런 다음 다음 명령을 실행하여 애플리케이션 스켈레톤을 생성할 수 있습니다.
npx create-react-app react-social-card
완료되면
react-social-card
폴더에서 사용할 수 있는 새 React 프로젝트가 있어야 합니다.npm start
명령을 사용하여 시작하십시오.기본 React 페이지는 http://localhost:3000에서 연결할 수 있습니다.
소셜 카드 코드 추가
custom-element
를 구성하기 전에 React 소셜 카드 구성 요소를 생성해야 합니다. 약간의 조사 후 사용할 수 있는 코드의 예는 다음과 같습니다. https://codepen.io/leoraw/pen/ZjvRpL . 이 예를 공유해 주신 @leoraw에게 감사드립니다.React 구성 요소 만들기
소셜 카드는 두 개의 서로 다른 React 구성 요소인 버튼 상자와 카드 자체로 나뉩니다.
먼저
components
폴더에 버튼 상자에 대한 새 파일을 만들고 이름을 ButtonBox.js
로 지정하고 다음 코드를 복사합니다.import React from "react";
const UiButton = props => {
const classes = (props.isClicked) ?
"ui-button clicked" : "ui-button";
const number = (props.isClicked) ?
(props.number + 1) : props.number;
return (
<button className={classes} id={props.text}
onClick={() => props.onClick()}>
<span className="ui-icon">{props.icon} </span>
{number}
</button>
);
};
class ButtonBox extends React.Component {
constructor(props) {
super(props);
console.log(props.likeIsClicked);
this.state = {
likeIsClicked: props.likeIsClicked
};
}
toggle(index) {
let state = {};
state[index] = !this.state[index];
this.setState(state);
}
render() {
return (
<div>
<UiButton icon='♥' text='likes'
number={this.props.likes}
onClick={() =>
this.toggle('likeIsClicked')}
isClicked={this.state.likeIsClicked}/>
</div>
);
}
}
export default ButtonBox;
그런 다음 같은 폴더에
SocialCard.js
파일을 만들고 다음 콘텐츠를 복사합니다.이 새 구성요소는 이전 구성요소를 가져와서 사용합니다. 효과적으로 마이크로 프런트엔드의 내부 아키텍처를 통해 여러 구성 요소를 사용할 수 있으며 모든 구성 요소는 하나의 사용자 지정 요소로 빌드됩니다.
import React from "react";
import ButtonBox from "./ButtonBox";
const UiCard = props => {
let {image, title, content} = props.content;
return (
<div class="card-wrapper">
<div className='card-img'>
<img src={image} />
</div>
<div className='card-content'>
<h3>{title}</h3>
<div>{content}</div>
</div>
</div>
);
}
class SocialCard extends React.Component {
render() {
return (
<div className='card-body'>
<UiCard content={this.props.content}/>
<div className='line'></div>
<div style={{textAlign: 'right'}}>
<ButtonBox
likeIsClicked={this.props.likeIsClicked}
likes={this.props.likes}/>
</div>
</div>
);
}
}
export default SocialCard;
기본 App.js 파일에서 새 구성요소 사용
이 두 구성 요소를 사용할 수 있게 되면 기본
App.js
파일을 업데이트하고 이전 React 데모 코드를 제거할 수 있습니다.기존 코드를 다음으로 대체하여
App.js
파일을 업데이트합니다.import React from 'react';
import './App.css';
import SocialCard from "./components/SocialCard";
const cardDetails = {
id: 0,
content: {
title: 'Shiba Inu',
image: 'https://material.angular.io/assets/img/examples/shiba2.jpg',
content: 'The Shiba Inu is the smallest of the six original and distinct spitz breeds of dog from Japan. A small, agile dog that copes very well with mountainous terrain, the Shiba Inu was originally bred for hunting.',
},
likeIsClicked: true,
likes: 5
}
function App() {
return (
<SocialCard
key={cardDetails.id}
content={cardDetails.content}
likes={cardDetails.likes}
likeIsClicked={cardDetails.likeIsClicked}
/>
);
}
export default App;
여기에서 새로운 소셜 카드 구성 요소를 인스턴스화하고 표시할 일부 데이터를 제공하는 것을 볼 수 있습니다.
이제 애플리케이션을 다시 시작하거나 페이지를 새로고침하여 소셜 카드가 표시되는지 확인할 수 있습니다. 그러나 이것은 여전히 원시 React 애플리케이션이며 작업을 완료하려면
custom-element
를 정의해야 합니다.앱을 맞춤 요소로 전환
src
폴더에서 components
폴더와 같은 수준에 custom-element
라는 새 폴더를 만듭니다.다음으로 관련 API를 사용하여
social-card-app.js
를 정의하기 위해 custom-element
라는 새 파일을 생성해 보겠습니다.import ReactDOM from "react-dom"
import React from "react"
import App from '../App'
class SocialCardApp extends HTMLElement {
connectedCallback() {
this.mountPoint = document.createElement('span')
this.render()
}
render() {
ReactDOM.render(<React.StrictMode>
<App/>
</React.StrictMode>,
this.appendChild(this.mountPoint))
}
}
customElements.get('react-social-card') || customElements.define("react-social-card", SocialCardApp)
"react-social-card"문자열은
custom-element
태그를 정의하는 데 사용되며 다음을 사용하여 React 앱을 렌더링합니다. <App/>.
러시아 인형과 유사합니다: custom-element > React app > social card component > buttonbox component.
그런 다음 다음
public/index.html
파일에서 본문을 다음으로 바꿉니다.<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<react-social-card></react-social-card>
</body>
브라우저를 다시 로드하고 HTML 콘텐츠를 확인합니다.
react-social-card
사용자 정의 요소가 사용되고 React 앱 콘텐츠를 로드합니다.축하합니다! React를 사용하여 첫 번째 마이크로 프런트엔드를 만들었습니다!
자원:
위의 코드는 GitHub에서 사용할 수 있습니다. https://github.com/avdev4j/react-social-card
YouTube 채널에서 마이크로 프런트엔드 동영상을 시청하세요.
Discord에 가입하여 구성 가능한 앱에 대해 공유하고 알아보세요: https://discord.gg/SdMCvyzzHm
Reference
이 문제에 관하여(React를 사용하여 Micro Frontend 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/entando/using-react-to-create-a-micro-frontend-4jn2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)