Project
Project: ๐ฉcodefoliol - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์
hyo.loui
2023. 2. 7. 21:41
๐ฏ๋ชฉ์ :
ํ๋ก์ ํธ - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฐ์ ์ฌํญ ์ ๋ฆฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์
1. Text Editor
๐ TOAST UI
- ๊ฒฐ์ ๊ณผ์
- TOAST
- ๋ฐ๋ชจ
- ์ฅ์
- ์ญ์ฌ์ ์ ํต์ด ์๊ณ ๋ค๋ฅธ ์ฌ๋์ ์๋ฃ๋ฅผ ์ฐธ๊ณ ํ ์ ์์ต๋๋ค.
- ํ๊ตญ ์ปค๋ฎค๋ํฐ๊ฐ ๋ฐ๋ฌ๋์ด ์์ต๋๋ค.
- ๋จ์
- react-editor wrapper์ react 18 ๋ฏธ์ง์
- SSR ๋ฏธ์ง์ → Next.js์ ์ฅ์ ์…Advanced Features: Dynamic Import | Next.js
- Next.js ์ toast ui Editor ์ ๊ฐ์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ (์งฑ์ฌ์)
- ๊ธ์ ํฌ๊ธฐ ์์ธ ์กฐ์ ๋ฏธ์ง์
- ์ด๋ฏธ์ง ์ฌ์ด์ฆ ์ ํ ๋ถ๊ฐ
TINY๋จ์ : ์ ๋ฃ
react-quill- ๋ฐ๋ชจ
- ์ฅ์
- ๊ธ๋ก๋ฒ ์ปค๋ฎค๋ํฐ๊ฐ ๋ฐฉ๋ํฉ๋๋ค.
- ๋จ์
- https://velog.io/@rlaclgns321/์น-์๋ํฐ-React-quill#ํฌ๋ก์ค-์ฌ์ด๋-์คํฌ๋ฆฝํธ
- ์๋ํฐ์ ์ฌ์ฉํ ๋ชจ๋์ ์ง์ ์ค์ ํด์ค์ผ ํฉ๋๋ค.
https://editorjs.io/- ๋ฐ๋ชจ: https://codesandbox.io/s/54qwjr78lp
- ์ฅ์
- JSON์ผ๋ก Output์ ๋ฐ์ ์ ์์ต๋๋ค.
- ์๋จํญ์ด ์์ด ui๊ฐ ๊น๋ํฉ๋๋ค.
- ๋จ์
- ๋ฌธ๋ฒ์ class๊ฐ ๋ฑ์ฅํฉ๋๋ค.
- this ๋ฐ์ธ๋ฉ ๋ณต์ต์ด ํ์ํฉ๋๋ค.
- ์๋จํญ์ด ์์ด editor ์ธ์ง…
- ๋ฌธ๋ฒ์ class๊ฐ ๋ฑ์ฅํฉ๋๋ค.
- TOAST
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
- ์ฅ์
- ์ง๊ด์ ์ด๋ค.
- ๋จ์
- ๊ฐ๋ฐ ๊ฒฝํ์ด ์ข์ง ๋ชปํ๋ค.
- ํ์ผ ํ๋ ๋ ํ์ผํจ ใ .ใ
- ๊ฐ๋ฐ ๊ฒฝํ์ด ์ข์ง ๋ชปํ๋ค.
- ์ฅ์
- styled-components
4. DB
๐ supabase
→ ์ ์ ธ์ ํฌํธํด๋ฆฌ์ค, ์ ์ ธ์ ์ ์ ธ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ช ํํ๊ฒ ํ๊ธฐ ์ํด SQL DB๋ฅผ ์ฌ์ฉํ๋ค.
→ Back-end๋จ์ ์ฝ๋ ์ง์ค๋ณด๋ค, Front-end๋จ์ ์ฝ๋์ ๋ ์ง์คํ๊ธฐ ์ํด BaaS์ธ Supabase ๋ฐ Supabase-Auth๋ฅผ ์ฌ์ฉํ๋ค.
- ๊ฒฐ์ ๊ณผ์
- SQL
- ์ฅ์
- ์ ๊ทํ๋ฅผ ํด ๋์ผ๋ฉด ์๋ฒ ๋ฆฌ์์ค๋ฅผ ์ค์ผ ์ ์๋ค.
- ๊ด๊ณ๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ ์ ์๋ค.
- ๋จ์
- ์๊ฒฉํ๋ค.
- ์ฌ์ฉ ๊ฒฝํ์ด ์ ๋ค.
- ์ฅ์
- NoSQL
- ์ฅ์
- ๊ฒ์
- ์ ์ฐ์ฑ
- ํ์ฅ์ฑ์ด ์ข๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ค ์จ๋ด
- ๋จ์
- ์ ์ฐ์ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ ๋ฏธ๋ฃจ๊ฒ ๋ ์ ์์
- ๋ฐ์ดํฐ ์ค๋ณต์ ๊ณ์ ์ ๋ฐ์ดํธ ํด์ผ ํจ
- ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ์ปฌ๋ ์ ์ ์ค๋ณต๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ ์ ๋ชจ๋ ์ปฌ๋ ์ ์์ ์ํํด์ผ ํจ (SQL์์๋ ์ค๋ณต ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก ํ๋ฒ๋ง ์ํ์ด ๊ฐ๋ฅ)
- ์ฅ์
- 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
์ฅ์ : ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ ํ์๊ฐ ์์๋จ์ : ๋ฆฌ๋์ค ๋ค์์ผ๋ก ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๊ฐ ๋ง์ต๋๋ค.
- ์ฅ์
- ํ์ฌ์์ ๋ง์ด ์ด๋ค. ๊ณต๊ฐ๋ ์๋ฃ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
- ๋๋ฒ๊น ํด์ด ๊ฐ๋ ฅํ๋ค.
- ํ์๋ค ๋ชจ๋ ์ฌ์ฉ ํด ๋ณด์๋ค.
- ๋จ์
- ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๋ก ์์ ์ค์๊ฐ ํฐ ๋ฒ๊ทธ๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์์ต๋๋ค. ์ฝ์ ์ฝ๋๊ฐ ๋ง์ ๋๋ฒ๊น ์ ์ฐจ๊ฐ ๊ธธ์ด์ง ์ ์์ต๋๋ค.
- ์ฅ์
- ์ฝ๋ค!
- ํ์ฌ์์ ๋ง์ด ์ด๋ค. ๋ฆฌ๋์ค ๋ค์์ผ๋ก ๋ง์ ์๋ฃ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
- atom ๋จ์๋ก ์ํ ๊ด๋ฆฌ ๊ฐ๋ฅ
- ๋จ์
- ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ์๋ฒฝํ์ง ์๋ค. ๋๋ฒ๊น ๋ฐ ์ค๋ ์ท ํ ์คํธ๋ฅผ ํ๋๋ฐ ์์ด ์ ๋ขฐ์ฑ์ด ๋ถ์กฑํ๋ค.
- ๋ชจ๋ API๋ค์ด ๋์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ์ง ์๋๋ค.
- ๋๋ฒ๊น ํด์ด ์๋ค.
- ์ฅ์
- ์ฝ๋ค!
- SSR์๋ ํ์ฉํ ์ ์๋ ๋ถ๋ถ์ด ์์ต๋๋ค. https://jotai.org/docs/guides/nextjs
- ๋จ์
- ์ ์ ๊ธฐ์ ์ด๋ค.
- ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋นํด ์์ง ์๋ฃ๊ฐ ๋ง์ง๋ ์์ต๋๋ค.
- ์ฅ์
- ์ฝ๋ค!
- ๊ธฐ์กด ๋ฆฌ๋์ค ์ง์์ด ์ผ๋ถ ์ ์ฉ๋์ด ์์ต๋๋ค.
- ๋ฆฌ๋์ค์ ๋๋ฒ๊น ํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋จ์
- Jotai ๋ฌธ์ํ๊ฐ ๋ ๋์ด ์๊ณ ์ปค๋ฎค๋ํฐ๋ ์์ต๋๋ค.
- ์ ์ ๊ธฐ์ ์ด๋ค.
- ์ฅ์
- https://xstate.js.org/
- ๋ณต์ก์ฑ์ด ๋์ ๋ ๋ฌดํํ ๋์์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋จ์
- ๋ฆฌ๋์ค๋ณด๋ค ๋ณต์ก์ฑ์ด ๋ ํฝ๋๋ค.
6. ์๋ฒ ์ํ ๊ด๋ฆฌ
๐ react-query
- ๊ฒฐ์ ๊ณผ์
React-query- ์ฅ์
- ์ปค๋ฎค๋ํฐ
- ๋ง์ ๊ธฐ๋ฅ ์ง์
- prefetching
- ๋จ์
- ๋ฌด๊ฑฐ์
- ๋ฌด๊ฑฐ์
Redux-query์ฅ์ ๋จ์ https://redux-toolkit.js.org/rtk-query/comparison๋ฌดํ ์คํฌ๋กค ์์
- ์ฅ์
- Next.js์ ๋์ผํ ๊ณณ์์ ๊ฐ๋ฐํ์ต๋๋ค. https://swr.vercel.app/ko/docs/with-nextjs
- ๋ฒ๋ค์ฌ์ด์ฆ ์์ต๋๋ค.
- pagination ์ง์ (useSWRInfinite)
- ๋จ์
- ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ณด๋ค ์ปค๋ฎค๋ํฐ๊ฐ ์์ต๋๋ค.
- ํ์ต์ด ํ์ํฉ๋๋ค.
- ์ฅ์
7. ๋ฐ์ดํธ ํผ์ปค
๐react-datepicker
- ๊ฒฐ์ ๊ณผ์ ๋
-๋ฌ ๊น์ง ๋ ์ง ํฝ ๊ฐ๋ฅํด์ผ ํจ
- react-datepicker (https://www.npmjs.com/package/react-datepicker)→ date-fns ์์ฉ→ ๋ค์ํ props์ ์ปค์คํ
์คํ์ผ ๊ฐ๋ฅ
- → ํจํค์ง ์ฌ์ด์ฆ 526kb๋ก ์๋์ ์ผ๋ก ํผ
- → ๋ฌ๊น์ง ํฝ ๊ฐ๋ฅ. ์ฌ๋ฌ ์ข ๋ฅ ๊ฐ๋ฅ. (https://reactdatepicker.com/)
- material ui date picker (https://mui.com/x/react-date-pickers/date-picker/)→ input๋ง ์ ๋ฌ ๊ฐ๋ฅ(custom icon ์ฌ์ฉ ๋ถ๊ฐ)
- → UI๊ฐ ๋ ์ ์
- toast ui date picker (https://nhn.github.io/tui.date-picker/latest/)
- → ์ฌ์ฉ ์๋ฃ๊ฐ ๋๋ฌด ์ ์
- react-datepicker (https://www.npmjs.com/package/react-datepicker)→ date-fns ์์ฉ→ ๋ค์ํ props์ ์ปค์คํ
์คํ์ผ ๊ฐ๋ฅ
์ฐธ๊ณ ์๋ฃ : 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์ผ ์ ์ง์. ์๊ฐ ์ฐจ์ด ๊ณ์ฐ ๊ฐ๋ฅ)