๐Ÿ“Œ Fav

๐Ÿ“ŒReact yarn ์„ค์น˜ ๋ฐฉ๋ฒ• ๋ฐ ๊ธฐ๋ณธ์…‹ํŒ… + ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ + ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๋ณด๋Š” ํฌ๋กฌ ํ™•์žฅํ”„๋กœ๊ทธ๋žจ (React Developer Tools)

ramen2 2024. 11. 26. 18:25
๋ฐ˜์‘ํ˜•

1. yarn์„ ์„ค์น˜ ( cmd ์ฐฝ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž…๋ ฅํ•˜์—ฌ ์„ค์น˜ํ•จ )

* npm / yarn :   npm๊ณผ yarn์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ธ ๋…ธ๋“œ(Node.js)์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž
์ „ ์„ธ๊ณ„์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“  ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€๋ฅผ npm ์˜จ๋ผ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
(opens new window)์— ์˜ฌ๋ฆฌ๋ฉด npm, yarn๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ์„ค์น˜ ๋ฐ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅ

> NPM(Node Package Manager)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ, Node.js์˜ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž
> yarn์€ 2016๋…„ ํŽ˜์ด์Šค๋ถ์—์„œ ๊ฐœ๋ฐœํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž. ๋ฆฌ์•กํŠธ(React)์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฒช์—ˆ๋˜ ์–ด๋ ค์›€์„
ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ, npm๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋‚˜, npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ํ˜ธํ™˜ํ•˜๋ฉด์„œ ์†๋„๋‚˜ ์•ˆ์ •์„ฑ ์ธก๋ฉด์—์„œ npm๋ณด๋‹ค ํ–ฅ์ƒ
(๋ณดํ†ต npm์ด ์•„๋‹Œ yarn์„ ์‚ฌ์šฉํ•˜๋Š”๋“ฏํ•จ)

 

| Yarn React 

npm i yarn --global


// ์œ„ ์ฝ”๋“œ๋กœ ์ตœ์ดˆ yarn ์„ค์น˜๋ฅผ ํ–ˆ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ์ž‘์„ฑํ•˜์—ฌ ์‹œ์ž‘ํ•˜๋ฉด๋จ
// ์•„๋ž˜๋Š” 'begin'ํด๋”์— ์ž‘์„ฑํ–ˆ๊ณ  ๋‹ค๋ฅธ๊ฑธ๋กœ ํ•ด๋„๋จ

yarn create react-app begin
// ์„ค์น˜์‹œ๊ฐ„ ์กฐ๊ธˆ ์†Œ์š”๋จ

 

 

์„ค์น˜์ค‘

 

 

 

 

 

2. yarn์˜ ๊ฒฝ๋กœ๋ฅผ ์žก๊ณ  ์‹œ์ž‘

cd begin
// ์œ„ ์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด begin์ด๋ผ๋Š” ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์ด๊ณณ์œผ๋กœ ๊ฒฝ๋กœ์„ค์ •

yarn start
// ์œ„ ๋ช…๋ น์–ด๋กœ ๋ฆฌ์•กํŠธ ํŽ˜์ด์ง€๊ฐ€ ํ•˜๋‚˜ ์‹คํ–‰๋จ

 

 

 

 

 

 

3. App.js์—์„œ html ์งœ๋“ฏ ์ž‘์—…์‹œ์ž‘ํ•˜์—ฌ ๋งˆํฌ์—…ํ•˜๋ฉด ๋ฆฌ์•กํŠธํŽ˜์ด์ง€ (http://localhost:3000/) ์—์„œ ์‹คํ–‰๋จ

+ App.css์—์„œ ์Šคํƒ€์ผ์‹œํŠธ ์ž‘์„ฑํ•˜์—ฌ style์„ ์ ์šฉํ•จ

+ index.css์—์„œ reset.css๋ฅผ ์ž‘์„ฑํ•˜๋“ฏ style์„ ์ ์šฉํ•จ

 

* React Fragment  <>  </> ๋กœ ๊ฐ์‹ธ์„œ ์ž‘์—…ํ•ด์•ผ ์˜ค๋ฅ˜ ์•ˆ๋œธ (์•„๋ž˜ ํผ ์ฐธ๊ณ )

  •  React Fragment : React์—์„œ๋Š” JSX์—์„œ ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ์š”์†Œ๋กœ ๊ฐ์‹ธ์•ผ ํ•จ.
    ๋งŒ์•ฝ div๋‚˜ span ๊ฐ™์€ ํƒœ๊ทธ๋กœ ๊ฐ์‹ธ๋ฉด ๋ถˆํ•„์š”ํ•œ DOM ์š”์†Œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ. Fragment๋Š” ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๊ธฐ๋Šฅ
  •  

* 'App'์€ ์ปดํฌ๋„ŒํŠธ ์ธ๋ฐ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„ ์ฒซ์ž๋Š” ๋Œ€๋ฌธ์ž์—ฌ์•ผํ•จ

import React from 'react';
import './App.css';

function App() {
  return(
  <div>
    <h1>๋ฆฌ์•กํŠธ ํ…Œ์ŠคํŠธ ์ œ๋ชฉ</h1>
    <p>๋ฆฌ์•กํŠธ ํ…Œ์ŠคํŠธ</p>
  </div>

);
}


export default App;

์ปดํฌ๋„ŒํŠธ ๋ช…์ด ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘+๋˜‘๊ฐ™์ด ๋˜์–ด ์žˆ๋Š” ๋ชจ์Šต / ๊ฒฐ๊ณผํŽ˜์ด์ง€ (host 3000)

 

 

+ index.js์— ๋ณด๋ฉด id root๊ฐ€ index.html์˜ id๋กœ ์ง€์ •๋œ๊ฑธ ๊ฐ€์ ธ์™€์„œ ๋ณด์—ฌ์ค€๋‹ค๋Š”๊ฑธ ํ™•์ธ๊ฐ€๋Šฅ

์ฆ‰, App.js์—์„œ ์•Œ๋งน์ด ๋งˆํฌ์—…์„ ํ•˜๋ฉด, index.js๋ฅผ ํ†ตํ•ด index.html์— ํ‘œ๊ธฐํ•ด์ฃผ๋Š” ๊ตฌ์กฐ

 

 

 

 

4. ๊ธฐ์ดˆ์…‹ํŒ… (์•„๋ž˜ ํŒŒ์ผ๋“ค์€ ํ•„์š”์—†์œผ๋ฏ€๋กœ ์‚ญ์ œ)

[src ํด๋”]

- reportWebVitals.js <index.js์— ์—ฐ๊ฒฐ๋œ ์•„๋ž˜ ์ฝ”๋“œ ๋˜ํ•œ ์‚ญ์ œ

import reportWebVitals from './reportWebVitals';

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals

reportWebVitals();

- App.test.js

- logo.svg

- setupTests.js

์ตœ์ข…ํŒŒ์ผ

 

 

 

 

 

 

++++

5. header ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค์–ด์„œ ๋„ฃ๊ธฐ

 

1. src ํด๋”์— header.jsx๋ฅผ ๋งŒ๋“ค๊ณ  ์•„๋ž˜ ํผ๊ณผ๊ฐ™์ด ์ž‘์„ฑ

import React from "react";

function Header(){
    return (
        <>
            <header className="header">
                <h1 className="logo">๋กœ๊ณ </h1>
                <ul className="nav">
                    <li>menu1</li>
                    <li>menu2</li>
                    <li>menu3</li>
                    <li>menu4</li>
                </ul>
            </header>
        </>
    );
}

export default Header

ํด๋”๊ตฌ์„ฑ

 

 

2. ๋งŒ๋“  header.jsx๋ฅผ App.js์— ์—ฐ๊ฒฐ 

*๋‹จ๋…ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•จ

import React from 'react';
import './App.css';
import Header from './header';
// ์ด๊ณณ์— main,footer๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๋‚˜๊ฐ€๊ฒŒ๋จ

function App() {
  return(
    <>
    <Header/>
    <Main/>
    </>

);
}


export default App;

 

์ด๊ณณ์— CSS ํšจ๊ณผ๋ฅผ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด  1. ๋ฒˆ๊ณผ์ • header.jsx์— css๋ฅผ ์ž„ํฌํŠธํ•จ 

import React from "react";
import "./header.css"; //<์ž„ํฌํŠธํ•œ ๋ถ€๋ถ„
function Header(){
    return (
        <>
            <header className="header">
                <h1 className="logo">๋กœ๊ณ </h1>
                <ul className="nav">
                    <li>menu1</li>
                    <li>menu2</li>
                    <li>menu3</li>
                    <li>menu4</li>
                </ul>
            </header>
        </>
    );
}

export default Header

 

 

 


3. ์•„๋ž˜์™€ ๊ฐ™์ด header ๋ฐ‘, mainImg ๋ฐ‘ , Content.. ๋“ฑ๋“ฑ์„ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„๋‚˜๊ฐ€๋ฉด ๋จ

๊ฒฐ๊ณผํ™”๋ฉด

 

 

 

 

 

 

 

4. ๊ฒ€์‚ฌ - components์—์„œ ํ™•์ธํ•ด๋ณด๋ฉด ์œ„์—์„œ ์Œ“์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณด์ž„

* ์•„๋ž˜ ํ™•์žฅํ”„๋กœ๊ทธ๋žจ ์„ค์น˜ํ•ด์•ผํ•จ

https://chromewebstore.google.com/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=ko

 

 

 

 

 

 

 

 

++ | ๊ทธ๋ƒฅ ๋ฆฌ์•กํŠธ ์„ค์น˜๋ฐฉ๋ฒ•

1. node js ์„ค์น˜ (LTS์„ค์น˜)

https://nodejs.org/ko

 

Node.js โ€” ์–ด๋””์„œ๋“  JavaScript๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”

Node.jsยฎ is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

2. ๋ช…๋ น์–ด ์ž…๋ ฅํ•˜์—ฌ ์„ค์น˜ ๋ฐ ์ƒ์„ฑ (์ดˆ๋ฐ˜์— ์‹œ๊ฐ„ ์ข€ ๊ฑธ๋ฆผ)

D:\cpu\react>npx create-react-app-blog
์•„๋ž˜ ๋ฌธ๊ตฌ
npx create-react-app blog  
(blog๋Š” ํด๋”๋ช…ํ• ๊ฒƒ์œผ๋กœ ์ง€์Œ)

 

3. cd๋กœ ์œ„์น˜ ์žก๊ณ  ์‹œ์ž‘

npm start

 

4. ํ•„์š”์—†๋Š” ํŒŒ์ผ์€ ์œ„ ํฌ์ŠคํŒ… ๋ณด๊ณ  ์ •๋ฆฌ

 

 

++ ์—๋Ÿฌ๋œฐ๋•Œ ์ตœ์‹ ๋ฒ„์ „์ด ์•„๋‹ˆ์—ฌ์„œ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋‹ˆ

์•„๋ž˜ ์ฝ”๋“œ๋กœ ๋ฒ„์ „ํ™•์ธํ›„, ๋‚ฎ์œผ๋ฉด ์œ„์˜ node์‚ฌ์ดํŠธ์—์„œ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•จ

node -v
npm -v

 

๋ฐ˜์‘ํ˜•