Skip to content

Latest commit

ย 

History

History

installation

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 

Installation


Note

'Installation' ์ฑ•ํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  • React๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ ์ง„์ ์œผ๋กœ ๋„์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•

Start a New React Project

  • ๋ฆฌ์•กํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘์— Next ๋ถ€ํ„ฐ ์†Œ๊ฐœ๋˜๋Š” ๊ฒƒ์ด SSR์ด ๋Œ€์„ธ๊ตฌ๋‚˜ ํ•˜๋Š” ๋А๋‚Œ์ด ๋“ค์—ˆ๋‹ค.
  • npm trends์—์„œ๋„ Next๊ฐ€ ์••๋„์ ์ธ ์„ ํƒ์„ ๋ฐ›๊ณ  ์žˆ์Œ. (https://npmtrends.com/gatsby-vs-next-vs-remix)
  • ๋ผ์šฐํŒ…, ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ, ๋ฒˆ๋“ค๋ง์ฒ˜๋Ÿผ ์†์ด ๋งŽ์ด ๊ฐ€๋Š” ์„ค์ •๋“ค์„ ํ”„๋ ˆ์ž„์›์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๋“ฏ.

    As your JavaScript bundle grows with every new feature, you might have to figure out how to split code for every route individually. As your data fetching needs get more complex, you are likely to encounter server-client network waterfalls that make your app feel very slow. As your audience includes more users with poor network conditions and low-end devices, you might need to generate HTML from your components to display content earlyโ€”either on the server, or during the build time. Changing your setup to run some of your code on the server or during the build can be very tricky. (์ถœ์ฒ˜: https://react.dev/learn/start-a-new-react-project#can-i-use-react-without-a-framework)

  • ์•„๋ž˜ ๋ณธ๋ฌธ์€ ์™œ ๋ฆฌ์•กํŠธ ํ”„๋ ˆ์ž„์›์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€? ๋ผ๋Š” ์งˆ๋ฌด์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ๋‹ต์•ˆ์ด๋ผ๊ณ  ์ƒ๊ฐ.

    React frameworks on this page solve problems like these by default, with no extra work from your side. They let you start very lean and then scale your app with your needs. Each React framework has a community, so finding answers to questions and upgrading tooling is easier. Frameworks also give structure to your code, helping you and others retain context and skills between different projects. Conversely, with a custom setup itโ€™s easier to get stuck on unsupported dependency versions, and youโ€™ll essentially end up creating your own frameworkโ€”albeit one with no community or upgrade path (and if itโ€™s anything like the ones weโ€™ve made in the past, more haphazardly designed). (์ถœ์ฒ˜: https://react.dev/learn/start-a-new-react-project#can-i-use-react-without-a-framework)

  • ํŠนํžˆ Next ํŒ€๊ณผ ๊ธด๋ฐ€ํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ณ  ์•„๋ž˜ ๋ณธ๋ฌธ์„ ๋ดค์„ ๋•Œ, ์ ์ฐจ ํ’€์Šคํƒ์œผ๋กœ ๊ฐ€๋Š” ๊ฒƒ์ด ๋ฆฌ์•กํŠธ ํŒ€์˜ ๋น„์ „์œผ๋กœ ๋ณด์ž„.

    Next.jsโ€™s App Router is a redesign of the Next.js APIs aiming to fulfill the React teamโ€™s full-stack architecture vision. It lets you fetch data in asynchronous components that run on the server or even during the build. (์ถœ์ฒ˜: https://react.dev/learn/start-a-new-react-project#nextjs-app-router)

  • ์„œ๋ฒ„์—์„œ ๊ตฌ๋™ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ํ•˜๊ฒŒ ํ•ด์ค„ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ

    For example, you can write a server-only React component as an async function that reads from a database or from a file. Then you can pass data down from it to your interactive components: (์ถœ์ฒ˜: https://react.dev/learn/start-a-new-react-project#which-features-make-up-the-react-teams-full-stack-architecture-vision)

๐Ÿ—ฃ๏ธ ์ด ์ฑ•ํ„ฐ ๊ด€๋ จํ•ด์„œ ๋‚˜๋ˆˆ ์ด์•ผ๊ธฐ

  • Q. ๋‹ค๋ฅธ ๋ถ„๋“ค์€ ์‹ค๋ฌดํ•  ๋•Œ, ๋ฆฌ์•กํŠธ์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๊ด€๋ จ ํ”„๋ ˆ์ž„์› ์‚ฌ์šฉ ํ˜„ํ™ฉ์ด ์–ด๋–ค์ง€?

  • A. ํŒŒํŠธ์žฅ ์„ฑํ–ฅ์ด ์•ˆ์ •ํ™”๋œ(stable) ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ๋ฒ„์ „์—…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๋Š” ์„ฑํ–ฅ์ด๋ผ ์ƒˆ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๋ฉด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ ๊ทน ๋„์ž…ํ•˜๋Š” ๋ถ„์œ„๊ธฐ. ๋ฐ์ดํ„ฐ ํ†ต์‹ ๋Ÿ‰์ด ๋งŽ์€ ๋ฐฑ์˜คํ”ผ์Šค ํ”„๋กœ์ ํŠธ์—์„œ ๋ฆฌ์•กํŠธ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒฝํ—˜์ด ์ข‹์•˜๋‹ค.

  • A. Gatsby ์‚ฌ์šฉ ์ค‘์ธ๋ฐ Next๊ฐ€ ๋Œ€์„ธ์ธ ๊ฒƒ ๊ฐ™์•„ ์˜ฎ๊ธธ๊นŒ ๊ณ ๋ฏผ์ž„.

  • Q. Gatsby๋Š” ์ •์  ํŽ˜์ด์ง€๋กœ ๋œ ํ”„๋กœ์ ํŠธ์— ํŠนํ™”๋œ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ ๋งž๋Š”์ง€?

  • A. ๋ฌด์กฐ๊ฑด ์ •์  ํŽ˜์ด์ง€ ์ƒ์„ฑ ๊ธฐ๋Šฅ๋งŒ ์žˆ๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ ssr์€ ์ง€์›๋˜์ง€ ์•Š๋Š”์ง€๋ผ ๊ณ ๋ฏผ ์ค‘์ด๋‹ค.

  • Remix๋ผ๋Š” ์ด๋ฆ„์„ ์ฒ˜์Œ ๋“ค์€ ๊ฒƒ์ด 2021๋…„์ธ๋ฐ ์ด๋ฒˆ์— ๊ณต์‹ ๋ฌธ์„œ์— ๊ด€๋ จ ํ”„๋ ˆ์ž„์›์œผ๋กœ ๋‘๋ฒˆ์งธ์— ์ด๋ฆ„์„ ์˜ฌ๋ ค์„œ ๋†€๋ž์Œ. ํ•˜์ง€๋งŒ ์•„์ง์€ ์‹ค๋ฌด์—์„œ ๋งŽ์ง€ ์‚ฌ์šฉ๋˜์ง„ ์•Š๋Š” ๋“ฏ.

  • ๋ฆฌ์•กํŠธ์˜ ํ”„๋ ˆ์ž„์›์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€์ธ ๋งŒํผ ์ง์ ‘ ๊ฒฝํ—˜ํ•ด๋ณด๊ณ  ๋‚ด๊ฐ€ ํ•˜๋ ค๋Š” ์ž‘์—…์— ์ ์ ˆํ•œ ํ”„๋ ˆ์ž„์›์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด ๋ณด์ž„.


Add React to an Existing Project

  • ๋ฆฌ์•กํŠธ ํ”„๋ ˆ์ž„์› ์—†์ด๋„ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•ด์ค€ ์ฑ•ํ„ฐ.
  • ์˜ˆ์ œ ์ฝ”๋“œ์— ๋‚˜์˜จ import { createRoot } from 'react-dom/client'; ๋ถ€๋ถ„์˜ 'react-dom/client' ๋ฅผ ๋ณด๋ฉฐ ๋ฆฌ์•กํŠธ์—์„œ ์„œ๋ฒ„ ์ชฝ๊ณผ ํด๋ผ์ด์–ธํŠธ ์ชฝ์œผ๋กœ ๋‚˜๋ˆ ๊ฐ€๋ ค๋Š” ๊ฒฝํ–ฅ์ด ๋ณด์ด๋Š” ๋“ฏ ํ–ˆ์Œ.

๐Ÿ—ฃ๏ธ ์ด ์ฑ•ํ„ฐ ๊ด€๋ จํ•ด์„œ ๋‚˜๋ˆˆ ์ด์•ผ๊ธฐ

  • ์ด์ „ ๋ฒ„์ „์˜ ๋ฆฌ์•กํŠธ ๋ฌธ์„œ์—์„œ๋Š” vite ๋ง๊ณ  webpack์ด ๋‚˜์™”์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ์ƒˆ๋กœ์šด ๋ฌธ์„œ์—์„œ๋Š” webpack์ด ์•„์˜ˆ ์‚ฌ๋ผ์ง„ ๊ฒƒ์ด ์ธ์ƒ์ ์ž„.
  • ๋ฉ”ํƒ€์—์„œ๋„ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•ด์™”์–ด! ๋ผ๋Š” ๋ฌธ์žฅ์ด ์žˆ์—ˆ๋Š”๋ฐ ๋ฉ”ํƒ€๋„ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋Š” ์–ด์ฉ” ์ˆ˜ ์—†๊ตฌ๋‚˜ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Œ. (Thatโ€™s a common way to integrate Reactโ€”in fact, itโ€™s how most React usage looked at Meta for many years!)
  • Gatsby๋งŒ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ Next๋ฅผ ๋„์ž…ํ•ด๋ด์•ผ๊ฒ ๋‹ค ์‹ถ์—ˆ๋˜ ์ ์ด ์žˆ์—ˆ์Œ. Gatsby๋กœ ํ•˜๋˜ ์ •์  ๋นŒ๋“œ๋ฅผ Next๋กœ๋„ ํ•˜๋ ค๊ณ  ํ•˜๋‹ค๊ฐ€ ๋ชปํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ์ฑ•ํ„ฐ์˜ ์˜ˆ์ œ ์ฝ”๋“œ ์ค‘์— next export output ์„ ๋ฐœ๊ฒฌํ•ด์„œ ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ด์•ผ๊ฒ ๋‹ค ์‹ถ์—ˆ์Œ. (๊ด€๋ จ ๋งํฌ: https://react.dev/learn/add-react-to-an-existing-project#using-react-for-an-entire-subroute-of-your-existing-website)
    • Next์—์„œ ssr, csr, ssg ๋‹ค ๊ตฌํ˜„๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด ๊ฒฝ์šฐ์—” getStaticProps() ํ•œ๋ฒˆ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•จ.

Editor Setup

  • ๋Œ€ํ‘œ์ ์ธ ์—๋””ํ„ฐ ์†Œ๊ฐœ ๋ฐ ์„ค์ • ์˜ˆ์‹œ ์†Œ๊ฐœ.

๐Ÿ—ฃ๏ธ ์ด ์ฑ•ํ„ฐ ๊ด€๋ จํ•ด์„œ ๋‚˜๋ˆˆ ์ด์•ผ๊ธฐ

  • vim์€ ๋งค๋‹ˆ์•„ ์ธต์ด ์žˆ์–ด๋ณด์ž„.
  • ใ…‡ใ…‡ ์ปค์Šคํ…€ํ•˜๊ธฐ ์ข‹์•„์„œ ๊ทธ๋Ÿฐ๋“ฏ.
  • ๋ณดํ†ต ์›น๊ฐœ๋ฐœํ•˜๋ฉด webstorm์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ intelliJ ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋ดค๊ณ , ์œ ๋ฃŒ ๋ฒ„์ „์ธ ๊ฒฝ์šฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ํŽธํ•˜๋‹ค๊ณ  ๋“ค์Œ.
  • '๋ฆฌํŒฉํ† ๋ง' ์ฑ…(๋งํฌ: http://www.yes24.com/Product/Goods/89649360)์—์„œ ์—๋””ํ„ฐ ๋งˆ๋‹ค ์ž๋™ ๋ฆฌํŒฉํ† ๋ง ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๋‚ด์šฉ์„ ๋ณธ ์ ์ด ์žˆ๋Š”๋ฐ ์œ ๋ฃŒ ๋ฒ„์ „์˜ ์—๋””ํ„ฐ๋“ค์€ ๊ทธ ๊ธฐ๋Šฅ์ด ์ข€ ๋” ๊ฐ•๋ ฅํ•˜๋‹ค๋”๋ผ.
  • lint ๊ด€๋ จ ๊ณ ๋ฏผ๋“ค
    • lint๋Š” ๊ณต์šฉ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋ ค ํ•˜๋Š”๋ฐ ํ”„๋กœ์ ํŠธ ๋งˆ๋‹ค ์ปค์Šคํ…€ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ธฐ์ค€์„ ์–ด๋–ป๊ฒŒ ์ •ํ•ด์•ผ ํ•  ์ง€ ๊ถ๊ธˆํ•จ.
    • ๊ฐœ๋ฐœ์ž ๊ฐœ์ธ๋งˆ๋‹ค ์„ ํ˜ธํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ์–ด์„œ ์–ด๋ ค์šด ๋“ฏ. ๊ณต์šฉ ์ปจ๋ฒค์…˜์— ๊ฐœ์ธ ๊ธฐํ˜ธ๋ฅผ ๋‹ค ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†์„ํ…๋ฐ, ๊ฐœ๊ฐœ์ธ์ด ๊ณต์šฉ ์ปจ๋ฒค์…˜์— ๋งž์ถฐ์•ผ ํ•˜๋Š” ๊ฒƒ์ธ์ง€ ๊ฐœ์ธ ๊ธฐํ˜ธ์— ๋งž๊ฒŒ ์ปจํŠธ๋กค ํ•ด๋„ ๋˜๋Š”๊ฑด์ง€ ๊ณ ๋ฏผ.
    • ํ˜ผ์ž ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ ํ˜ผ์ž lint ์„ค์ •ํ•˜๋‹ค๋ณด๋‹ˆ ์• ๋งคํ•ด์ง€๋Š” ๋ถ€๋ถ„๋„..
    • ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์ธ๋ฐ ๋‹ด๋‹น์ž๋Š” ์—†์„ ๋•Œ, lint๋ฅผ ์ œ์ผ ์ผ๋ฐ˜์ ์ธ ๊ฑธ๋กœ ์„ค์ •ํ•ด๋‘๊ณ  ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋ฐ”๊พธ๊ธฐ๋„ ํ•จ. ๋‹ค๋งŒ ์„ค์ •์„ ๋งค๋ฒˆ ๋ฐ”๊พธ๊ธฐ ์–ด๋ ค์šฐ๋‹ˆ ignore ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋„..
    • Husky๋กœ lint ์„ค์ •์„ ์ •๋ฆฌํ•˜๋„๋ก ํ•˜์˜€์Œ. (husky: https://www.npmjs.com/package/husky)
    • Husky๋ฅผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด lint๊ฐ€ ์˜๋ฏธ ์—†๋Š”๋“ฏ.
    • Husky๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋‹ˆ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฌด๋„ˆ์ง€๋Š” ๋А๋‚Œ...๐Ÿฅบ

React Developer Tools

  • ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ๋„์™€์ฃผ๋Š” ๋ธŒ๋ผ์šฐ์ € ์ต์Šคํ…์…˜ ๋ฐ ํŒจํ‚ค์ง€ ์„ค์น˜์— ๋Œ€ํ•œ ์†Œ๊ฐœ.

๐Ÿ—ฃ๏ธ ์ด ์ฑ•ํ„ฐ ๊ด€๋ จํ•ด์„œ ๋‚˜๋ˆˆ ์ด์•ผ๊ธฐ

  • highlight ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ.
  • ์ด์Šˆ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ, highlight๋กœ ์–ด๋””๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์ข‹์Œ.
  • ์ƒํƒœ ๊ด€๋ฆฌ๋„ debugger๋‚˜ console.log๋กœ ํ™•์ธ..
  • safari ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด ์ƒˆ๋กœ์› ์Œ.