• Stars
    star
    304
  • Rank 132,081 (Top 3 %)
  • Language
    TypeScript
  • Created over 3 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๊ฐ•์˜๊ต์•ˆ ๊ธฐ์—ฌ(Pull Request) ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ๊ฐ•์ขŒ ๊ฐ•์˜๊ต์•ˆ์€ ์—ฌ๊ธฐ ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๊ฐ•์ขŒ ํ•ต์‹ฌ ๋‚ด์šฉ ์ •๋ฆฌํ•ด์„œ ์—ฌ๊ธฐ(README.md)์— ์˜ฌ๋ ค๋‘์—ˆ์Šต๋‹ˆ๋‹ค~ ๋‹ค์‹œ๋ณด๊ธฐํ•˜๋ฉด์„œ ๊ฐ™์ด ์ฝ๊ณ  ๋ณต์Šตํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„ธํŒ…

  1. node 16๋ฒ„์ „(14๋‚˜ 17๋„ ๊ดœ์ฐฎ์Œ)๊ณผ MySQL์„ ๋ฏธ๋ฆฌ ์„ค์น˜ํ•˜๊ธฐ, mysql์€ ์„ค์น˜๊ณผ์ • ์ค‘ ๋น„๋ฒˆ ์„ค์ • ํ•จ.
  2. ์ด ๋ ˆํฌ git clone ๋ฐ›๊ธฐ
  3. cd back
  4. npm i bcrypt && npm i (์—ฌ๊ธฐ์„œ ์—๋Ÿฌ๋‚˜๋ฉด ์งˆ๋ฌธ์œผ๋กœ ๋ฌธ์˜)
  5. .env ์ž‘์„ฑํ•˜๊ธฐ(COOKIE_SECRET๊ณผ MYSQL_PASSWORD ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •)
COOKIE_SECRET=cookienyamnyam
MYSQL_PASSWORD=๋””๋น„๋น„๋ฒˆ
  1. config/config.json ์„ค์ •(MYSQL ์ ‘์† ์„ค์ •)
  2. npx sequelize db:create(์Šคํ‚ค๋งˆ ์ƒ์„ฑ)
  3. npm run devํ–ˆ๋‹ค๊ฐ€ ctrl + c๋กœ ๋„๊ธฐ(ํ…Œ์ด๋ธ” ์ƒ์„ฑ)
  4. npx sequelize db:seed:all(๊ธฐ์ดˆ ๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ)
  5. npm run dev(์•ž์œผ๋กœ ๋งค๋ฒˆ ์ด๊ฑธ๋กœ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„ ์ผœ์•ผ ํ•จ, 1~8์€ ํ•  ํ•„์š” ์—†์Œ)
  6. localhost:3095์—์„œ ์„œ๋ฒ„ ๋Œ์•„๊ฐ€๋Š” ์ค‘(ํ”„๋ก ํŠธ ๊ฐ•์˜๋Š” localhost:3090์—์„œ ์ง„ํ–‰๋จ)
  7. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ API.md์™€ typings/db.ts๋ฅผ ๋‚จ๊ฒจ๋‘” ์ƒํ™ฉ

๊ฐ•์ขŒ ์ˆœ์„œ

๊ฐ•์ขŒ์—์„œ ์–ธ๊ธ‰ํ•œ๋Œ€๋กœ ์ง์ ‘ ์„ธํŒ…ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๊ทธ๋ƒฅ settings/ts ํด๋” ํด๋ก ๋ฐ›์•„์„œ ํ•˜์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ง์ ‘ ์„ธํŒ…ํ•˜๊ธฐ์—๋Š” ๋ฒ„์ „์ด ์ž๊พธ ๋‹ฌ๋ผ์ ธ์„œ ์„ธํŒ…๋ฒ•์ด ๋ฐ”๋€Œ๊ณ , ์ž…๋ฌธ์ž๋ถ„๋“คํ•œํ…Œ๋Š” ๋ฒ„๊ฒ์Šต๋‹ˆ๋‹ค. ํด๋”๊ฐ€ ๋งŽ์•„์„œ ํ—ท๊ฐˆ๋ฆฌ๋‹ˆ back ํด๋”๋Š” ๋ฐฑ์—”๋“œ ์šฉ์œผ๋กœ ๋‚จ๊ฒจ๋‘์‹œ๊ณ , setting/ts ํด๋”๋ฅผ front ํด๋”๋กœ ๋ฐ”๊พผ ๋’ค ๋‚˜๋จธ์ง€ ํด๋”๋Š” ์ „๋ถ€ ์ง€์›Œ๋ฒ„๋ฆฌ์„ธ์š”.

1์ผ์ฐจ

  1. package.json
  • npm init์œผ๋กœ ์ƒ์„ฑ
  • npm i react react-dom
  • npm i typescript @types/react @types/react-dom
  • ์„ค์น˜ ํ›„ package-lock.json๊ณผ node_modules ํด๋”๊ฐ€ ์ƒ์„ฑ๋จ
  1. .eslintrc
  • eslint ์„ค์ • ํŒŒ์ผ
  • ์ฝ”๋“œ ์ ๊ฒ€ ๋„๊ตฌ, ์ง์ ‘ ์„ค์ •ํ•˜๋ฉด ํŒ€์›๊ฐ„ ์˜๊ฒฌ ์ถฉ๋Œ์ด ์žˆ์œผ๋‹ˆ prettier์— ์œ„์ž„
  • npm i -D eslint
  1. .prettierrc
  • prettier ์„ค์ • ํŒŒ์ผ
  • ์ €์žฅํ•˜๋ฉด ์•Œ์•„์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์คŒ(์—๋””ํ„ฐ ์„ค์ • ํ•„์š”)
  • npm i -D prettier eslint-plugin-prettier eslint-config-prettier
  1. tsconfig.json
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์„ค์ •
  • ์–ธ์–ด ๋ฌธ๋ฒ•๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฒฐ๊ณผ๋ฌผ์ด ์–ด๋–ป๊ฒŒ ๋‚˜์™€์•ผํ•˜๋Š”์ง€ ์„ค์ •ํ•˜๋Š” ํŒŒ์ผ
  • lib์€ ES2020, DOM(๋ธŒ๋ผ์šฐ์ €), module์€ esnext์ฒ˜๋Ÿผ ์ตœ์‹  ์„ค์ •์ด์ง€๋งŒ target์€ es5๋กœ IE ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€ํ™˜
  • strict: true๋ฅผ ์ผœ๋†“์•„์•ผ ํƒ€์ž… ์ฒดํ‚น์„ ํ•ด์ค˜์„œ ์˜๋ฏธ๊ฐ€ ์žˆ์Œ.
  1. webpack.config.ts
  • ์›นํŒฉ ์„ค์ •
  • ts, css, json, ์ตœ์‹  ๋ฌธ๋ฒ• js ํŒŒ์ผ๋“ค์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์คŒ.
  • npm i -D webpack @types/webpack @types/node
  • entry์—์„œ ํŒŒ์ผ์„ ์„ ํƒํ•˜๋ฉด module์— ์ •ํ•ด์ง„ rules๋Œ€๋กœ js๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ํ•ฉ์ณ์คŒ(output). plugins๋Š” ํ•ฉ์น˜๋Š” ์ค‘ ๋ถ€๊ฐ€์ ์ธ ํšจ๊ณผ๋ฅผ ์คŒ
  • ts๋Š” babel-loader๋กœ, css๋Š” style-loader์™€ css-loader๋ฅผ ํ†ตํ•ด js๋กœ ๋ณ€ํ™˜
  • babel์—์„œ๋Š” @babel/preset-env(์ตœ์‹ ๋ฌธ๋ฒ• ๋ณ€ํ™˜) @babel/preset-react(๋ฆฌ์•กํŠธ jsx ๋ณ€ํ™˜), @babel/preset-typescript(ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ณ€ํ™˜)
  • npm i -D css-loader style-loader @babel/core babel-loader @babel/preset-env @babel/preset-react @babel/preset-typescript
  • publicPath๊ฐ€ /dist/๊ณ  [name].js์—์„œ [name]์ด entry์— ์ ํžŒ๋Œ€๋กœ app์œผ๋กœ ๋ฐ”๋€Œ์–ด /dist/app.js๊ฐ€ ๊ฒฐ๊ณผ๋ฌผ์ด ๋จ.
  1. index.html ์ž‘์„ฑ
  • ์•„์ด์ฝ˜, ํฐํŠธ, ํŒŒ๋น„์ฝ˜๊ฐ™์€ ๊ฒƒ์€ ์Šฌ๋ž™์—์„œ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ
  • client.tsx์— ๊ฐ„๋‹จํ•œ tsx ์ž‘์„ฑ
  • #app ํƒœ๊ทธ์— ๋ฆฌ์•กํŠธ๊ฐ€ ๋ Œ๋”๋ง๋จ.
  • ./dist/app.js๋กœ ์›นํŒฉ์ด ๋งŒ๋“ค์–ด๋‚ธ jsํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ด
  1. tsconfig-for-webpack-config.json
  • webpackํ•  ๋•Œ webpack.config.ts๋ฅผ ์ธ์‹ ๋ชปํ•˜๋Š” ๋ฌธ์ œ
  • npm i cross-env
  • package.json์˜ scripts์˜ build๋ฅผ cross-env TS_NODE_PROJECT="tsconfig-for-webpack-config.json" webpack
  • npm run build
  • index.html ์‹คํ–‰ํ•ด๋ณด๊ธฐ
  1. ์›นํŒฉ ๋ฐ๋ธŒ ์„œ๋ฒ„ ์„ค์น˜
  • ๊ฐœ๋ฐœ์šฉ ์„œ๋ฒ„์ธ devServer ์˜ต์…˜ ์ถ”๊ฐ€(port๋Š” 3090, publicPath๋Š” /dist/๋กœ)
  • webpack serveํ•  ๋•Œ webpack.config.ts๋ฅผ ์ธ์‹ ๋ชปํ•˜๋Š” ๋ฌธ์ œ
  • npm i -D ts-node webpack-dev-server @types/webpack-dev-server webpack-cli
  • package.json์˜ scripts์˜ dev๋ฅผ cross-env TS_NODE_PROJECT="tsconfig-for-webpack-config.json" webpack serve --env development
  • npm run devํ•˜๋ฉด localhost:3090์—์„œ ์„œ๋ฒ„ ์‹คํ–‰๋จ.
  1. hot reloading ์„ค์ •
  • npm i -D @pmmmwh/react-refresh-webpack-plugin react-refresh
  • webpack์˜ babel-loader ์•ˆ์— ์„ค์ •(env) ๋ฐ plugin์œผ๋กœ ์ถ”๊ฐ€
  1. fork-ts-checker-webpack-plugin
  • webpack์€ ts์ฒดํฌ ํ›„ eslint์ฒดํฌ ํ›„ ๋นŒ๋“œ ์‹œ์ž‘
  • ts๋ž‘ eslint๋Š” ๋™์‹œ์— ์ฒดํฌํ•˜๋ฉด ๋” ํšจ์œจ์ 
  • ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋™์‹œ์— ์ง„ํ–‰ํ•˜๊ฒŒ ํ•ด์คŒ.
  1. ํด๋” ๊ตฌ์กฐ ์„ธํŒ…
  • ํŽ˜์ด์ง€๋“ค์€ pages
  • ํŽ˜์ด์ง€๊ฐ„ ๊ณตํ†ต๋˜๋Š” ํ‹€์€ layouts
  • ๊ฐœ๋ณ„ ์ปดํฌ๋„ŒํŠธ๋Š” components
  • ์ปค์Šคํ…€ํ›…์€ hooks, ๊ธฐํƒ€ ํ•จ์ˆ˜๋Š” utils
  • ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ ํด๋” ์•„๋ž˜ index.tsx(JSX)์™€ styles.tsx(์Šคํƒ€์ผ๋ง)
  1. ts์™€ webpack์—์„œ alias ์ง€์ •
  • npm i -D tsconfig-paths
  • tsconfig์—์„œ baseUrl์™€ paths ์„ค์ •
  • webpack์—์„œ๋Š” resolve์•ˆ์— alias ์„ค์ •
  • ../layouts/App๊ฐ™์€ ๊ฒƒ์„ @layouts/App์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  1. emotion ์„ธํŒ…
  • styled components์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์„ค์ •์ด ๊ฐ„๋‹จํ•จ.
  • npm i @emotion/react @emotion/styled
  • npm i -D @emotion/babel-plugin (์›นํŒฉ์— babel ์„ค์ • ์ถ”๊ฐ€)
  • ์Šคํƒ€์ผ๋“œ ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค ๋•Œ ๋ณ€์ˆ˜๋ฅผ ๋งŽ์ด ๋งŒ๋“œ๋Š” ์…ˆ์ด๋ฏ€๋กœ & ๊ฐ™์€ ์„ ํƒ์ž ์ ๊ทน ํ™œ์šฉํ•ด์•ผ ๋ณ€์ˆ˜ ์ด๋ฆ„์ง“๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Œ.
  1. @layouts/App ์ž‘์„ฑ
  • ๋ฆฌ์•กํŠธ ๋ผ์šฐํ„ฐ ์ ์šฉํ•˜๊ธฐ
  • npm i react-router react-router-dom
  • npm i -D @types/react-router @types/react-router-dom
  • client.tsx์—์„œ App์„ BrowserRouter๋กœ ๊ฐ์‹ธ๊ธฐ
  • @layouts/App์— Switch, Redirect, Route ๋„ฃ๊ธฐ
  1. @loadable/component
  • ๋ผ์šฐํ„ฐ๋ฅผ ์ฝ”๋“œ์Šคํ”Œ๋ฆฌํŒ… ํ•ด์คŒ
  • ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•œ ์‚ฌ๋žŒ์€ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€์— ํ•„์š”ํ•œ JS๋งŒ ๋ฐ›์Œ
  • 3์ดˆ ๋ฃฐ ๊ธฐ์–ตํ•˜์ž!
  • npm i @loadable/component @types/loadable__component
  1. @pages/SignUp ์ž‘์„ฑ

2์ผ์ฐจ

  1. ํšŒ์›๊ฐ€์ž… axios๋กœ ์ง„ํ–‰
  • npm i axios
  • CORS ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ devServer์— proxy ์„ธํŒ…
  • CORS๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋ฐœ์ƒ
  • ๊ฐ™์€ ๋„๋ฉ”์ธ์˜ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ฑฐ๋‚˜, ์„œ๋ฒ„๋ผ๋ฆฌ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
  • ๋”ฐ๋ผ์„œ ๊ฐ™์€ ๋„๋ฉ”์ธ์ธ proxy์„œ๋ฒ„๋ฅผ ๋„์›Œ CORS๋ฅผ ํ”ผํ•ด๊ฐˆ ์ˆ˜ ์žˆ์Œ.
  1. useInput ์ปค์Šคํ…€ ํ›… ๋งŒ๋“ค๊ธฐ
  • ์ปค์Šคํ…€ ํ›…์œผ๋กœ ํ›…๋“ค๊ฐ„์— ์ค‘๋ณต๋œ ๊ฒƒ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Œ
  • ํ›… ๋‚ด๋ถ€์— ํ›…์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ผ€์ด์Šค
  • useCallback์€ return ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ํ•จ์ˆ˜์— ๊ผญ ์ ์šฉํ•ด์ฃผ์ž
  • useMemo๋Š” return ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’์— ์ ์šฉํ•˜์ž
  1. @pages/LogIn ์ž‘์„ฑ ๋ฐ SWR
  • ๋กœ๊ทธ์ธ ํ•œ ์‚ฌ๋žŒ์ด ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•œ๋‹ค๋ฉด?
  • GET ์š”์ฒญ์€ SWR๋กœ ํ•˜๋Š” ๊ฒƒ๋„ ๊ดœ์ฐฎ์Œ
  • npm i swr
  • SWR์— fetcher(axios๋ฅผ ์‚ฌ์šฉ)๋ฅผ ๋‹ฌ์•„์คŒ.
  • ๋กœ๊ทธ์ธํ–ˆ์Œ์„ ์ฆ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด withCredentials: true ์žŠ์œผ๋ฉด ์•ˆ ๋จ.
  1. @layouts/Workspace ์ž‘์„ฑ
  • ๋ˆˆ์— ๋„๋Š” ๊ตฌ์—ญ ๋‹จ์œ„๋กœ ์Šคํƒ€์ผ๋“œ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค์–ด๋‘ .
  • ๊ตฌ์—ญ ๋‚ด๋ถ€์˜ ํƒœ๊ทธ๋“ค์€ ์Šคํƒ€์ผ๋“œ์ปดํฌ๋„ŒํŠธ๋กœ ๋งŒ๋“ค๋ฉด ๋ณ€์ˆ˜๋ช… ์ง€์–ด์•ผ ํ•˜๋‹ˆ css์„ ํƒ์ž๋กœ ์„ ํƒ
  1. ๊ทธ๋ผ๋ฐ”ํƒ€
  • npm i gravatar @types/gravatar
  • Github๊ฐ™์€ ์•„์ด์ฝ˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
  1. typescript ์ •์˜
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด๊ฐ’์— ํƒ€์ž…์„ ๋ถ™์—ฌ์ฃผ๋ฉด ๋จ.
  • ๋‚จ์ด ํƒ€์ดํ•‘ํ•ด๋‘” ๊ฒƒ ๋ถ„์„ํ•˜๋Š” ๊ฒŒ ์–ด๋ ค์›€
  • Go to Type Definition
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ์ž์™€๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“  ts ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ @types๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋“ค
  1. @components/DMList ์ž‘์„ฑ
  • ํ˜„์žฌ ์ฑ„๋„ ์ฐธ์—ฌ์ž ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ
  1. @pages/DirectMessage ์ž‘์„ฑ
  • Header์™€ ChatList, ChatBox๋กœ ๊ตฌ์„ฑ
  1. @components/ChatBox ๋จผ์ € ์ž‘์„ฑ
  • react-mentions ํ™œ์šฉ
  • DM์—์„œ๋Š” ๋ฉ˜์…˜ ๊ธฐ๋Šฅ์ด ์—†์ง€๋งŒ Channel์—์„œ๋Š” ์žˆ์„ ๊ฒƒ
  1. DM ๋ณด๋‚ด๋ณด๊ธฐ
  • optimistic UI
  • ๋จผ์ € ํ”„๋ก ํŠธ์—์„œ ํ‘œ์‹œํ•˜๊ณ , ์„œ๋ฒ„๋กœ๋Š” ๊ทธ ๋‹ค์Œ์— ์š”์ฒญ๋ณด๋ƒ„
  • ์š”์ฒญ ์‹คํŒจํ•˜๋Š” ์ˆœ๊ฐ„ ํ”„๋ก ํŠธ์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋„์›€
  • ๋ณด๋‚ผ ๋•Œ ์—๋Ÿฌ๊ฐ€๋‚œ ๊ฒƒ์€ ์„œ๋ฒ„์ชฝ์—์„œ socket ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ
  1. DM ๋กœ๋”ฉ์€ useSWRInfinite ์‚ฌ์šฉ
  • ๊ฒฐ๊ณผ๋ฌผ์ด 2์ฐจ์› ๋ฐฐ์—ด ๊ผด๋กœ ๋‚˜์˜ด.
  • ์ฒซ ๋ฒˆ์งธ ์ธ์ž๊ฐ€ ์ฃผ์†Œ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ์ฃผ์†Œ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜
  • ์ด ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŽ˜์ด์ง€๊ฐ€ ๋“ค์–ด์žˆ์–ด์„œ ํ˜„์žฌ ๋ช‡ ํŽ˜์ด์ง€์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ.

3์ผ์ฐจ

  1. Workspace์— ์†Œ์ผ“ ์—ฐ๊ฒฐํ•˜๊ธฐ
  • socket.emit์ด ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ, socket.on์ด ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ
  1. DMList์— onlineList, dm ์ด๋ฒคํŠธ ์—ฐ๊ฒฐ
  2. @components/ChatList ์ž‘์„ฑ ๋ฐ @components/Chat ๊ตฌํ˜„
  • npm i react-custom-scrollbars @types/react-custom-scrollbars
  1. makeSection ๊ตฌํ˜„
  • npm i dayjs
  • dayjs๋Š” moment๋ฅผ ๋Œ€์ฒดํ•จ
  1. ํ”„๋กœํŒŒ์ผ๋ง ํ•˜๋ฉด์„œ Chat์— memo ์ ์šฉํ•˜๊ธฐ
  2. ์ธํ”ผ๋‹ˆํŠธ ์Šคํฌ๋กค๋ง ๊ตฌํ˜„
  3. @components/ChannelList ์ž‘์„ฑ
  4. @pages/ChannelMessage ์ž‘์„ฑ
  5. Channel Chat ๋ณด๋‚ด๋ณด๊ธฐ
  6. ๋นŒ๋“œ ์„ค์ •
  7. ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์ธ JS์™€ html์„ ์„œ๋ฒ„๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ

More Repositories

1

nodejs-book

Node.js๊ต๊ณผ์„œ ์†Œ์Šค ์ฝ”๋“œ
JavaScript
771
star
2

react-nodebird

JavaScript
328
star
3

ts-all-in-one

TypeScript
277
star
4

react-webgame

JavaScript
275
star
5

html-css-naver

HTML
183
star
6

food-delivery-app

Objective-C
175
star
7

webgame-lecture

JavaScript
104
star
8

es2021-webgame

HTML
100
star
9

nodejs-crawler

JavaScript
97
star
10

next-app-router-z

TypeScript
93
star
11

vue-webgame

Vue
63
star
12

vue-nodebird

JavaScript
52
star
13

ts-nodebird

HTML
42
star
14

redux-vs-mobx

JavaScript
37
star
15

ts-react

TypeScript
35
star
16

react-filepicker

react component for filepicker
JavaScript
29
star
17

ts-book

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ต๊ณผ์„œ ์†Œ์Šค ์ฝ”๋“œ
TypeScript
29
star
18

cs-database

26
star
19

react-vote

JavaScript
22
star
20

ts-lecture

TypeScript
21
star
21

cs-network-http

JavaScript
18
star
22

react-fb-like

React component for facebook like button!
JavaScript
17
star
23

cs-datastructure

์ž๋ฃŒ๊ตฌ์กฐ ๊ฐ•์ขŒ ์†Œ์Šค ์ฝ”๋“œ
JavaScript
17
star
24

react-nodebird-next13

TypeScript
16
star
25

z-com

TypeScript
15
star
26

es2020-webgame

JavaScript
8
star
27

next.js

JavaScript
6
star
28

nest-prisma

TypeScript
6
star
29

aws-upload

JavaScript
6
star
30

zerocho-sw

HTML
6
star
31

nodebird

JavaScript
5
star
32

whenwemeet

Application that graphically shows available time people can meet
JavaScript
5
star
33

zplanner

offline webapp planner that syncs
JavaScript
4
star
34

nodejs-gcloud

Dockerfile
4
star
35

google-image-crawler

JavaScript
4
star
36

kakao-sdk

Kakao javascript SDK packaged for Meteor
JavaScript
3
star
37

gitExample

HTML
3
star
38

kumovie

Java
3
star
39

node-window

JavaScript
3
star
40

free-git

2
star
41

food-delivery-app-69

Java
2
star
42

daum-maps-api

Daum Maps API async packaged for Meteor
JavaScript
2
star
43

test

2
star
44

es2024-webgame

HTML
1
star
45

naver-html-css-new

HTML
1
star
46

html-css-naver-new

HTML
1
star