Frontend ๊ฐœ๋ฐœ์ž - hyo.loui

Project: ๐Ÿšฉcodefoliol - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ์ • ๋ณธ๋ฌธ

Project

Project: ๐Ÿšฉcodefoliol - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ์ •

hyo.loui 2023. 2. 7. 21:41

๐ŸŽฏ๋ชฉ์  :

ํ”„๋กœ์ ํŠธ -  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฒฐ์ •์‚ฌํ•ญ ์ •๋ฆฌ

 


 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ์ •

 

 

1. Text Editor

๐Ÿ“Œ TOAST UI

 

 


2. Next.js ์ ์šฉ ์—ฌ๋ถ€

๐Ÿ“Œ Next.js ์ ์šฉ

 

 

  • ๊ฒฐ์ • ๊ณผ์ •
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ธํ„ฐ๋ ‰์…˜์„ ์ง„ํ–‰ํ•˜๋Š” ์‹œ๊ฐ„ ๋ณด๋‹ค, ์ •์ ์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„์ด ๋” ๊ธธ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์˜๊ฒฌ.
    • SEO ์ ์šฉ์— ์œ ๋ฆฌํ•˜๋‹ค.
    • ์ •์ ์ธ ํŽ˜์ด์ง€์—์„œ ์†์‰ฝ๊ฒŒ SSR์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ„ํŽธํ•œ Route ์„ค๊ณ„๋กœ ํ™•์žฅ์— ์œ ๋ฆฌํ•˜๋‹ค.

 


 

3. ์Šคํƒ€์ผ๋ง

๐Ÿ“Œ styled-components

 

 

  • ๊ฒฐ์ • ๊ณผ์ •
    • styled-components
      • ์žฅ์ 
        • ๊ฐœ๋ฐœํŒ€ ์ „์›์—๊ฒŒ ์ต์ˆ™ํ•œ ๋ฌธ๋ฒ•.
        • Sass๋ฌธ๋ฒ•์„ ์ง€์›ํ•จ.
        • ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•ด ๋…๋ฆฝ์ ์ธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑ ๊ฐ€๋Šฅ.
      • ๋‹จ์ 
        • ์Šคํƒ€์ผ๋ง์„ ์œ„ํ•ด์„œ๋Š” ์ปดํฌ๋„ŒํŠธํ™”๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค.
    • emotion
      • ์žฅ์ 
        • styled-componenets์™€ ๋™์ผ
      • ๋‹จ์ 
        • ๋กœ๊ณ ๊ฐ€ ๋ชป์ƒ๊ฒผ์–ด์š”
        • pragma line์„ ํŒŒ์ผ ์ตœ์ƒ๋‹จ์— ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•จ
    • tail-wind
      • ์žฅ์ 
        • ๊ฐ„ํŽธํ•œ ํผ๋ธ”๋ฆฌ์‹ฑ ๊ฐ€๋Šฅ
        • ๋ชจ๋“ˆ base css๋ผ ์„ฑ๋Šฅ์ด ๊ฐ€์žฅ ์šฐ์ˆ˜ํ•จ
      • ๋‹จ์ 
        • ์ธ๋ผ์ธ ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์ง€๊ณ , ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง
        • ์‚ฌ์ „ ํ•™์Šต์ด ์–ด๋Š์ •๋„ ํ•„์š”..
    • SCSS + CSS-Module
      • ์žฅ์ 
        • ์ง๊ด€์ ์ด๋‹ค.
      • ๋‹จ์ 
        • ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ์ข‹์ง€ ๋ชปํ•˜๋‹ค.
          • ํŒŒ์ผ ํ•˜๋‚˜ ๋” ํŒŒ์•ผํ•จ ใ…Ž.ใ…Ž

 


 

4. DB

๐Ÿ“Œ supabase

→ ์œ ์ ธ์™€ ํฌํŠธํด๋ฆฌ์˜ค, ์œ ์ ธ์™€ ์œ ์ ธ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด SQL DB๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

→ Back-end๋‹จ์˜ ์ฝ”๋“œ ์ง‘์ค‘๋ณด๋‹ค, Front-end๋‹จ์˜ ์ฝ”๋“œ์— ๋” ์ง‘์ค‘ํ•˜๊ธฐ ์œ„ํ•ด BaaS์ธ Supabase ๋ฐ Supabase-Auth๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

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

 

 

DBSQL NoSQL

  SQL NoSQL
BaaS Supabase firebase
DB RDS(MySQL,Oracle….) MongoDB, ElasticSearch

 

 

4.5. Auth

  • ๐Ÿ“Œ supabase-auth
    • OAuth
    • Next-Auth
    • Supabase-Auth → supabase๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ auth๋„ ์ž๋™์ ์œผ๋กœ ํ•ด๊ฒฐ๋จ!
    • Firebase-Auth

 


 

5. ๋กœ์ปฌ ์ƒํƒœ ๊ด€๋ฆฌ

๐Ÿ“Œ recoil

 

 

  • ๊ฒฐ์ • ๊ณผ์ •

    Context API
    • ์žฅ์  : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Œ
    • ๋‹จ์  : ๋ฆฌ๋•์Šค ๋‹ค์Œ์œผ๋กœ ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
    Redux Tool Kit
    • ์žฅ์ 
      • ํšŒ์‚ฌ์—์„œ ๋งŽ์ด ์“ด๋‹ค. ๊ณต๊ฐœ๋œ ์ž๋ฃŒ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ๋””๋ฒ„๊น… ํˆด์ด ๊ฐ•๋ ฅํ•˜๋‹ค.
      • ํŒ€์›๋“ค ๋ชจ๋‘ ์‚ฌ์šฉ ํ•ด ๋ณด์•˜๋‹ค.
    • ๋‹จ์ 
      • ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ๋กœ ์ž‘์€ ์‹ค์ˆ˜๊ฐ€ ํฐ ๋ฒ„๊ทธ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ์„ ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„ ๋””๋ฒ„๊น… ์ ˆ์ฐจ๊ฐ€ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    Recoil
    • ์žฅ์ 
      • ์‰ฝ๋‹ค!
      • ํšŒ์‚ฌ์—์„œ ๋งŽ์ด ์“ด๋‹ค. ๋ฆฌ๋•์Šค ๋‹ค์Œ์œผ๋กœ ๋งŽ์€ ์ž๋ฃŒ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • atom ๋‹จ์œ„๋กœ ์ƒํƒœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
    • ๋‹จ์ 
      • ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๊ฐ€ ์™„๋ฒฝํ•˜์ง€ ์•Š๋‹ค. ๋””๋ฒ„๊น… ๋ฐ ์Šค๋ƒ…์ƒท ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š”๋ฐ ์žˆ์–ด ์‹ ๋ขฐ์„ฑ์ด ๋ถ€์กฑํ•˜๋‹ค.
      • ๋ชจ๋“  API๋“ค์ด ๋†’์€ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
      • ๋””๋ฒ„๊น… ํˆด์ด ์—†๋‹ค.
    Jotai
    • ์žฅ์ 
    • ๋‹จ์ 
      • ์‹ ์ƒ ๊ธฐ์ˆ ์ด๋‹ค.
      • ํƒ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋น„ํ•ด ์•„์ง ์ž๋ฃŒ๊ฐ€ ๋งŽ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
    Zustand
    • ์žฅ์ 
      • ์‰ฝ๋‹ค!
      • ๊ธฐ์กด ๋ฆฌ๋•์Šค ์ง€์‹์ด ์ผ๋ถ€ ์ ์šฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
      • ๋ฆฌ๋•์Šค์˜ ๋””๋ฒ„๊น…ํˆด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋‹จ์ 
      • Jotai ๋ฌธ์„œํ™”๊ฐ€ ๋œ ๋˜์–ด ์žˆ๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ์ž‘์Šต๋‹ˆ๋‹ค.
      • ์‹ ์ƒ ๊ธฐ์ˆ ์ด๋‹ค.
    Xstate
    • ์žฅ์ 
      • https://xstate.js.org/
      • ๋ณต์žก์„ฑ์ด ๋†’์„ ๋•Œ ๋ฌดํ•œํ•œ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹จ์ 
      • ๋ฆฌ๋•์Šค๋ณด๋‹ค ๋ณต์žก์„ฑ์ด ๋” ํฝ๋‹ˆ๋‹ค.

 


6. ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ

๐Ÿ“Œ react-query

 

 

  • ๊ฒฐ์ • ๊ณผ์ •

    React-query
    • ์žฅ์ 
      • ์ปค๋ฎค๋‹ˆํ‹ฐ
      • ๋งŽ์€ ๊ธฐ๋Šฅ ์ง€์›
      • prefetching
    • ๋‹จ์ 
      • ๋ฌด๊ฑฐ์›€

    Redux-query SWR
    • ์žฅ์ 
      • Next.js์™€ ๋™์ผํ•œ ๊ณณ์—์„œ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. https://swr.vercel.app/ko/docs/with-nextjs
      • ๋ฒˆ๋“ค์‚ฌ์ด์ฆˆ ์ž‘์Šต๋‹ˆ๋‹ค.
      • pagination ์ง€์› (useSWRInfinite)
    • ๋‹จ์ 
      • ๋ฆฌ์•กํŠธ ์ฟผ๋ฆฌ๋ณด๋‹ค ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ž‘์Šต๋‹ˆ๋‹ค.
      • ํ•™์Šต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

7. ๋ฐ์ดํŠธ ํ”ผ์ปค

๐Ÿ“Œreact-datepicker

 

 

  • ๊ฒฐ์ • ๊ณผ์ •๋…„-๋‹ฌ ๊นŒ์ง€ ๋‚ ์งœ ํ”ฝ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
    1. react-datepicker (https://www.npmjs.com/package/react-datepicker)→ date-fns ์‘์šฉ→ ๋‹ค์–‘ํ•œ props์™€ ์ปค์Šคํ…€ ์Šคํƒ€์ผ ๊ฐ€๋Šฅ
      • → ํŒจํ‚ค์ง€ ์‚ฌ์ด์ฆˆ 526kb๋กœ ์ƒ๋Œ€์ ์œผ๋กœ ํผ
      • → ๋‹ฌ๊นŒ์ง€ ํ”ฝ ๊ฐ€๋Šฅ. ์—ฌ๋Ÿฌ ์ข…๋ฅ˜ ๊ฐ€๋Šฅ. (https://reactdatepicker.com/)
    2. material ui date picker (https://mui.com/x/react-date-pickers/date-picker/)→ input๋งŒ ์ „๋‹ฌ ๊ฐ€๋Šฅ(custom icon ์‚ฌ์šฉ ๋ถˆ๊ฐ€)
      • → UI๊ฐ€ ๋…์„ ์ 
    3. toast ui date picker (https://nhn.github.io/tui.date-picker/latest/)
      • → ์‚ฌ์šฉ ์ž๋ฃŒ๊ฐ€ ๋„ˆ๋ฌด ์ ์Œ

 

์ฐธ๊ณ  ์ž๋ฃŒ : https://velog.io/@seeh_h/React์—์„œ-ํ™œ์šฉ-๊ฐ€๋Šฅํ•œ-DatePicker-Library

 

React์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ DatePicker Library ์ •๋ฆฌ

datepicker library ์‚ฌ์šฉ ํ›„๊ธฐ

velog.io

 


8. ๊ธฐํƒ€

  • axios ์‚ฌ์šฉ (๊นƒํ—™API, (+)ChatGPT(OpenAI))
  • lodash ์‚ฌ์šฉ
    • lodash date (+)date-fns ์‚ฌ์šฉ (๋‚ ์งœ ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅ. n์ผ ์ „ ์ง€์›. ์‹œ๊ฐ„ ์ฐจ์ด ๊ณ„์‚ฐ ๊ฐ€๋Šฅ)