HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
프론트엔드 스쿨 교안(1기)
/
📝
React(Front-end)
/
📝
내 웹페이지에서 1분만에 도입해보기
📝

내 웹페이지에서 1분만에 도입해보기

해당 예제는 공식문서를 참고하고 있습니다.
웹사이트에 React 추가 - React
React는 필요한 만큼만 사용하면 됩니다. 적게든 많게든 말이죠. React는 처음부터 점진적으로 도입할 수 있게 설계되었습니다. 그래서 React는 필요한 만큼만 사용하면 됩니다. 아마 기존 페이지에 "상호작용"이라는 조미료를 첨가하기만 하고 싶을 수도 있습니다. 이럴 때 React 컴포넌트를 쓰면 좋습니다. 오늘날 웹사이트의 대부분은 싱글 페이지가 아니고 그래야 할 필요도 없습니다.
웹사이트에 React 추가 - React
https://ko.reactjs.org/docs/add-react-to-a-website.html
웹사이트에 React 추가 - React
React는 jQuery와 같은 프론트엔드 개발을 위한 '라이브러리' 입니다.(반면 Angular, Blazor는 프레임웤) 따라서 우리는 필요한 만큼만 가져다 사용할 수 있습니다! + 해당 부분에서는 '한번 해보기' 정도로 살펴가면 좋습니다. 자세한 내용은 뒤에서 다뤄보겠습니다.
  • 그 밖에 특징
    • Facebook에서 관리
    • 컴포넌트 관리 → 재사용
    • Virtual DOM(바뀌는 부분만 업데이트)
    • JSX(JS + XML)
    • 싱글페이지 어플리케이션 만들기 좋음(링크가 바뀌지 않음, 공식홈페이지) → 사용자 경험
Stack Overflow Developer Survey 2021
The United States and India continue to provide the highest volume of survey responses, followed by Germany and UKI (UK and Ireland). The top ten countries account for almost 60% of all respondents. To see the top ten countries, refer to the methodology section.
Stack Overflow Developer Survey 2021
https://insights.stackoverflow.com/survey/2021#section-most-popular-technologies-web-frameworks
Stack Overflow Developer Survey 2021
React - 사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
React는 상호작용이 많은 UI를 만들 때 생기는 어려움을 줄여줍니다. 애플리케이션의 각 상태에 대한 간단한 뷰만 설계하세요. 그럼 React는 데이터가 변경됨에 따라 적절한 컴포넌트만 효율적으로 갱신하고 렌더링합니다. 선언형 뷰는 코드를 예측 가능하고 디버그하기 쉽게 만들어 줍니다. 스스로 상태를 관리하는 캡슐화된 컴포넌트를 만드세요. 그리고 이를 조합해 복잡한 UI를 만들어보세요. 컴포넌트 로직은 템플릿이 아닌 JavaScript로 작성됩니다.
React - 사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
https://ko.reactjs.org/
React - 사용자 인터페이스를 만들기 위한 JavaScript 라이브러리

리액트 맛보기

Web Front-End를 처음 배우며 html/css/js로 이루어진 웹 페이지 제작에 대한 기초를 배우셨을거에요. 우리는 익숙한 방법에 단지 몇 줄만 추가하여 기존의 html에 React를 사용해 보도록 하겠습니다.
  1. HTML 파일에 React 랜더링을 위한 DOM을 만들어줍니다.
    1. 먼저 편집할 HTML 파일을 index.html 이름으로 만들고 에디터를 통해 열어줍니다.
      그 다음 비어있는 <div> 태그를 하나 만들어줄께요. 바로 이 태그를 통해 React가 내용을 표시하게 됩니다.
      <div> 태그에 식별을 위한 속성 id를 부여합니다. 이를 통해 js에서 태그를 찾고 React 컴포넌트를 출력하게 됩니다.
       
  1. React / React Dom cdn추가하기
    1. 다음은 react와 reactDom 라이브러리를 추가하는 스크립트입니다. 해당 스크립트를 </body> 태그 앞에 추가하겠습니다. 해당 라이브러리를 이용해 React 컴포넌트를 만들고 우리가 만든 HTML문서에 추가합니다.
      그리고 html파일과 같은 폴더에 hello_button.js 라는 이름으로 js파일을 하나 만들겠습니다. 그 다음 html에서 해당 파일을 추가해 주도록 할게요.
       
  1. React 컴포넌트 만들기
    1. 앞서 만들어둔 hello_button.js 파일에 스크립트를 작성을 해주겠습니다. 해당 부분은 react 컴포넌트를 만드는 부분입니다. 잘 이해가 되지 않아도 괜찮습니다. 자세한 내용은 뒤에서 다뤄 볼 것입니다!!
       
  1. React 컴포넌트 추가하기
    1. React 컴포넌트를 제작했으니 보여주는 과정만 남았습니다. 이제 Hello 버튼을 가장 앞 과정에서 만들었던 root id를 가지고 있는 div태그에 추가하면 끝입니다! 아래 코드를 hello_button.js 파일 제일 하단에 추가합니다.
       
  • 완성된 코드
    • 배포할 때에는 production으로 바꿔주시면 됩니다.
    • react.development → react.production
    • react-dom.development → production
  • 아래처럼 코드를 변경해보고 다시 실행해보세요.
 

 
  • 크롬 웹 스토어에서 설치하시고 리엑트 홈페이지에 들어가서 개발자도구를 열어보세요.
React Developer Tools
Adds React debugging tools to the Chrome Developer Tools. Created from revision 0229baee2 on 12/14/2021.
React Developer Tools
https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=ko
React Developer Tools
 
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>리액트 1분만에 추가해보기!</title> </head> <body> <h1>내 html에 리액트 1분만에 추가해보기!</h1> <p>단 1분만에 설치없이 리액트를 추가할 수 있다구요?</p> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>리액트 1분만에 추가해보기!</title> </head> <body> <h1>내 html에 리액트 1분만에 추가해보기!</h1> <p>단 1분만에 설치없이 리액트를 추가할 수 있다구요?</p> <!-- 추가된 <div> --> <div id="root"></div> </body> </html>
<!-- ... 기존의 html ... --> <script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin></script> <script src="hello_button.js"></script> </body>
// react 컴포넌트 정의하기 const el = React.createElement; class HelloButton extends React.Component { constructor(props) { super(props); this.state = { liked: false }; } render() { if (this.state.liked) { return 'Hello World!'; } return el( 'button', { onClick: () => this.setState({ liked: true }) }, 'Hello' ); } }
const domContainer = document.querySelector('#root'); ReactDOM.render(el(LikeButton), domContainer);
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>리액트 1분만에 추가해보기!</title> </head> <body> <h1>내 html에 리액트 1분만에 추가해보기!</h1> <p>단 1분만에 설치없이 리액트를 추가할 수 있다구요?</p> <div id="root"></div> <script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin></script> <script src="hello_button.js"></script> </body> </html>
index.html
// react 컴포넌트 정의하기 const el = React.createElement; class HelloButton extends React.Component { constructor(props) { super(props); this.state = { liked: false }; } render() { if (this.state.liked) { return 'Hello World!'; } return el( 'button', { onClick: () => this.setState({ liked: true }) }, 'Hello' ); } } // DOM에 리액트 컴포넌트 랜더링하기 const domContainer = document.querySelector('#root'); ReactDOM.render(el(HelloButton), domContainer);
hello_button.js
return el( 'button', { onClick: () => { this.setState({ liked: true }); for (let i = 0; i < 10; i++) { console.log(`hello world ${i}`); } } }, 'Hello' );