ํ๊ตญ์ด | English
๋ฐฑ์ค ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ.
์๋ฐ์คํฌ๋ฆฝํธ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด์ ์๋ก์ด ํจ๋ฌ๋ค์.
[!IMPORTANT]
const whyBananass = { banana: '๐', bananas: '๐๐', bananass: '๐๐๐๐', }console.log(('b' + 'a' + +'a' + 'a').toLowerCase() + (!(1/0) + [])[3].repeat(2));
๋ฐ๋๋Bananass ํ๋ ์์ํฌ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค!
๋ฐ๋๋๋ ์๋ฐ์คํฌ๋ฆฝํธJavaScript ๋ฐ ํ์ ์คํฌ๋ฆฝํธTypeScript ๊ธฐ๋ฐ์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด๋ฅผ ์ํ ํ๋ ์์ํฌ๋ก, ๋ฐฑ์คใ์ฝ๋ํฌ์ค ๋ฑ ๋ค์ํ ๋ฌธ์ ํ์ด ํ๋ซํผ๋ค์ Node.js ํ๊ฒฝ์์ ๋ฐ๋ณต์ ์ผ๋ก ๋ง์ฃผ์น๋ ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํ๋ฉฐ, ๊ฐ๊ฒฐํ๊ณ ํธ๋ฆฌํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ํ์ ์คํฌ๋ฆฝํธTypeScript ์ง์์ด ํ์ํ์๋ค๊ณ ์?
- ES16ES2025 ๋ฑ ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ๋ฌธ๋ฒ์ ์ฐ๊ณ ์ถ์๋ฐ ๋งํ์ จ๋์?
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ผ์ ๊ฐ์?
- ๋งค๋ฒ
readline
/fs
ํ ํ๋ฆฟ ์ฝ๋ ๋ณต๋ถํ๊ธฐ ์ง์น์ จ๋์?
์ด์ ๊ฑฑ์ ํ์ง ๋ง์ธ์! ๋ฐ๋๋ ํ๋ ์์ํฌ๋ ์ด๋ฐ ๋ฌธ์ ์ ๋ค์ ๋ชจ๋ ํด๊ฒฐํฉ๋๋ค.
ํจ๊ป ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ ๋ฐฑ์ค 1000๋ฒ: A+B ๋ฌธ์ ํ์ด ์์ ๋ฅผ ์ดํด๋ด ์๋ค!
-
๊ธฐ์กด ๋ฐฉ๋ฒ์ ํตํ ๋ฌธ์ ํ์ด.
const readline = require('node:readline'); const { EOL } = require('node:os'); let inputStr = ''; const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on('line', line => { inputStr = `${inputStr}${line}${EOL}`; }).on('close', () => { console.log(solution(inputStr)); process.exit(0); }); function solution(input) { const [a, b] = input .trim() .split(' ') .map(val => Number(val)); return a + b; }
-
๋ฐ๋๋ ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํ ๋ฌธ์ ํ์ด.
function solution(input) { const [a, b] = input .trim() .split(' ') .map(Number); return a + b; } export default { solution };
๋ ๊ฐ๊ฒฐํ๊ณ , ๋ ์ง๊ด์ ์ธ ์ฝ๋! ์ ๋ ฅ ์ฒ๋ฆฌ์ ๋ค์ด๋ ์๊ฐ์ ์ค์ด๊ณ , ์ค์ง ์๊ณ ๋ฆฌ์ฆ์๋ง ์ง์คํ ์ ์์ต๋๋ค.
๋ฌผ๋ก , ์๋๋๋ค!
- ์๋ฐ์คํฌ๋ฆฝํธJavaScript ๋ฐ ํ์ ์คํฌ๋ฆฝํธTypeScript ์ง์.
- ESMECMAScript Module ๋ฐ CommonJS ๋ชจ๋ ์์คํ ์ง์.
- ๋ฐฑ์ค Node.js ํ๊ฒฝ์ ๊ตฌ์ ๋ฐ์ง ์๋ ES16ES2025 ๋ฑ ์ต์ ๋ฌธ๋ฒ ์ง์.
- ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ๋ฐ
lodash
๋ฑ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ฌ์ค๊ธฐ ์ง์. - ํ๋ก๊ทธ๋๋จธ์ค์ฒ๋ผ
solution
ํจ์ ํ๋๋ก ์์ํ๊ธฐ ์ง์. - ํ ์คํธ ์ผ์ด์ค ์์ฑ ๋ฐ ์คํ ์ง์.
-
create-bananass
๋ก ์์ํ๊ธฐ ์ง์. -
fs
๋ชจ๋์ ์ฌ์ฉํ ๋์ฑ ๋น ๋ฅธ ์ ์ถ๋ ฅ ์ง์. - ํธ์๋ฅผ ์ํ ๋ค์ํ CLI ๋ช ๋ น์ด ์ง์.
- ํ๋ถํ๊ณ ์์ธํ ๋ฌธ์ ์ง์.
- ESLint ๋ฐ Prettier ์์ฒด ์ง์.
์ด๋ค๊ฐ์? ๋ฐ๋๋ ํ๋ ์์ํฌ๋ฅผ ํตํด ๋์ฑ ํธ๋ฆฌํ ๋ฌธ์ ํ์ด๋ฅผ ๊ฒฝํํด๋ณด๊ณ ์ถ์ง ์์ผ์ ๊ฐ์?
React์ create-react-app
, Next.js์ create-next-app
์ฒ๋ผ, ๋ฐ๋๋ ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ create-bananass
๋ก ์ง๊ธ ๋ฐ๋ก ์๋ก์ด ๋ฌธ์ ํ์ด ํจ๋ฌ๋ค์์ ๊ฒฝํํด๋ณด์ธ์!
๋ฐ๋๋ ํ๋ ์์ํฌ๋ create-bananass
๋ฅผ ํตํด ์ฆ์ ์ค์นํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
npm create bananass@latest
๋ ์์ธํ ์ฌ์ฉ๋ฒ์ ๋ฐ๋๋ ํ๋ ์์ํฌ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๋ฐ๋๋ ํ๋ ์์ํฌ๋ ๋ฌธ์ํ๋ฅผ ๊ฐ์ฅ ํฐ ๊ฐ์น๋ก ์ฌ๊น๋๋ค. ๋ฐ๋๋ ํ๋ ์์ํฌ์ ๋ชจ๋ ์ฌ์ฉ๋ฒ๊ณผ ๊ธฐ๋ฅ์ ๋ฐ๋๋ ํ๋ ์์ํฌ ๋ฌธ์์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋ฐ๋๋ ํ๋ ์์ํฌ ๊ธฐ์ฌ์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๋ฒ๊ทธBug ๋ฐ ์ ์Suggestion ๋ฑ ์ฌ๋ฌ ์ฃผ์ ์ ๋ํ ์ด์Issue, ๋์ด์ค๊ธฐ ์์ฒญPull Request, ํ ๋ก Discussion ๋ฑ์ ๋ชจ๋ ํ์ํฉ๋๋ค.
๋ค๋ง, ์ฌ๋ฐ๋ฅธ ์ปค๋ฎค๋ํฐ ํ๊ฒฝ์ ์ค์ํ๊ณ ๋ ๋์ ์คํ ์์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด, ๋ฐ๋๋ ํ๋ ์์ํฌ์ ๊ธฐ์ฌํ๊ธฐ ์ ๋ฐ๋์ ์๋ ๋ด์ฉ๋ค์ ํ์ธํด์ฃผ์ธ์.
๋ฐ๋๋ ํ๋ ์์ํฌ๋ ์ ์์ ๋ฒ์ ์ ์ฑ
Sementic Versioning์ ๋ฐ๋ฆ
๋๋ค. ๋ชจ๋ ๋ฆด๋ฆฌ์ฆ ๋ฒ์ ์ ์ฃผ(MAJOR).๋ถ(MINOR).์(PATCH)
ํ์์ ๋ฐ๋ฆ
๋๋ค.
์ปค๋ฎค๋ํฐ์ ๊ธฐ์ฌํ๊ธฐ ์ , ๊ธฐ์ฌ์ ํ๋ ๊ฐ๋ น ๊ท์ฝ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ์ธํ๋ ค๋ฉด, ๋ณ๊ฒฝ ์ฌํญ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๋ณด์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ จ๋์? ๋ณด์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
๋ฐ๋๋ ํ๋ ์์ํฌ๋ MIT ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค. ๋ผ์ด์ ์ค ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.