๐JS/โกver.0
section31-์ฐ๋ฆฌ์ ์ฒซ ๋ฒ์งธ ๋๊ตฌ : ๋ ธ๋(Node)
4:Bee
2023. 4. 6. 13:48
728x90
| Topic | explain | class |
| Node.js | ๋
ธ๋JS๋ JS์ ๋ฐํ์์ด๋ค. JS์ ์ด๋ ์ ๋ฌด์์ธ๊ฐ JS์๋ ์ ๊ณต์ํ์ด ์๋๊ฐ JS๋ ์ค์นํ์ง ์๋ ๋์ ์ผ์ ํ ์ฌ์์ ๊ฐ์ถ์ด์ผํ๋ค. ๊ทธ๊ฒ์ ๋ฐ๋ก ECMAScript์ฌ์์ด๋ค. ๊ทธ๋ฌ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ JS๋ฅผ ์คํ์ํจ๋ค. ๊ทธ๋ ๊ฒ ๊ท์น์ ์งํจ๋ค. ๋ธ๋ผ์ฐ์ ๋ JS๋ฅผ ์์ฑํ๊ณ ์คํ์ํฌ ์ ์๋ ์ ์ผํ ์ฅ์์ด๋ค. ํ์ง๋ง phyton์ด๋ ruby๋ก๋ ์น์๋ฒ๋ ํ์ผ ์์คํ ์ ์ํธ์์ฉ์ ํ ์์๋๋ฐ Node.js๊ฐ ๋์ค๊ธฐ ์ ์๋ ์ด๋ฐ์ผ์ ๋ชปํ๋ค. Node๋ ๋ธ๋ผ์ฐ์ ๋ฐ์์ ์๋๋๋ JS์ ์คํ ํ๊ฒฝ์ด๋ค.JS์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ง ์๊ณ ์คํ ํ ์ ์๋ค.(๊ทธ๋ ๋ค๊ณ ๋๊ฐ์ ์ผ์ ํ ์ ์๋ ๊ฒ์ ์๋๋ค.) |
Node Js๊ฐ์ |
| Node์ ํ๋ ์ ์ํฌ๋ Express์ด๋ค. | Node๋ ์ด๋์ ์ฌ์ฉํ๋๊ฐ? | |
| ํ๋ ์์ํฌ๋? : ํ๋ ์์ํฌ(Framework)๋, ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๋ก ๊ธฐ๋ณธ์ ์ธ ๋ผ๋์ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ ์ํํธ์จ์ด ๋๊ตฌ ๋ชจ์์
๋๋ค. ์ฆ, ์ด๋ค ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋, ํด๋น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ ๋ชจ๋๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ๋ฐ์๋ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ๊ธฐ์กด์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถํ๊ณ ์ผ๊ด๋ ์ฝ๋ ํ์ง์ ์ ์งํ ์ ์์ต๋๋ค. ๋ํ, ํ๋ ์์ํฌ๋ ๋ณด์, ์ฑ๋ฅ, ํ์ฅ์ฑ ๋ฑ ์ฌ๋ฌ ์ธก๋ฉด์์ ์์ ์ ์ธ ์ํํธ์จ์ด๋ฅผ ๋ง๋ค ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ํ์ ์ธ ํ๋ ์์ํฌ๋ก๋ Spring, Django, Ruby on Rails, Laravel ๋ฑ์ด ์์ต๋๋ค. |
||
| Node REPL | ๋ธ๋ผ์ฐ์ ์ JavaScript์ฝ์์ REPL์ ๋๋ค. | Node REPL |
| REPL : REPL์ Read-Eval-Print Loop์ ์ฝ์์ ๋๋ค. Node.js๋ JavaScript ๋ฐํ์ ํ๊ฒฝ์ผ๋ก, REPL์ JavaScript ์ฝ๋๋ฅผ ์ ๋ ฅํ๊ณ ์ฆ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ ์ฝ์ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ์ฆ, REPL์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ฝ๋๋ฅผ ์ฝ๊ณ ์คํํ๋ฉฐ, ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ณ ๋ค์ ์๋ก์ด ์ฝ๋๋ฅผ ์ ๋ ฅ๋ฐ๋ ๋ฃจํ๋ฅผ ๋งํฉ๋๋ค. Node.js์์ REPL์ ์ฌ์ฉํ๋ฉด JavaScript ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์คํํ๊ณ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค. | ||
| Node ํ์ผ ์คํํ๊ธฐ | ![]() |
Node ํ์ผ ์คํ |
| Process & Argv | argv๋ ์ ๋ฌ๋ ์ธ์๋ฅผ ์๋ฏธํ๋ค. | ํ๋ก์ธ์ค์ Argv {Doc} https://nodejs.org/dist/latest-v18.x/docs/api |
| argv๋? ์ฌ๊ธฐ์ argc๋ ์ ๋ฌ๋ ์ธ์์ ๊ฐ์๋ฅผ, argv๋ ์ธ์๋ค์ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ํ๋ ๋๋ค. Python์์๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก sys.argv๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋งจ๋ ๋ผ์ธ์์ ์ ๋ฌ๋ ์ธ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. argv๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ ์คํํ ๋ ์ธ์๋ฅผ ๋ฐ์์ ์คํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, node ๋ช ๋ น์ด๋ก ์คํํ๋ JavaScript ํ์ผ์์ argv๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋งจ๋ ๋ผ์ธ์์ ์ ๋ฌ๋ ์ธ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. |
||
| Node์ค์ต | ํ์ผ์์คํ ๋ชจ๋์ ์ถฉ๋ ๊ณผ์ | |
| Node(gitBash)์ฝ๋ | ||
|
const fs = require('fs');
const folderName = process.argv[2] || 'Project'
try {
fs.mkdirSync(folderName);
// console.log(folderName);
fs.writeFileSync(`${folderName}/index.html`);
fs.writeFileSync(`${folderName}/app.js`);
fs.writeFileSync(`${folderName}/app.css`);
} catch (e) {
console.log("SOMETHING WENT WRONG!!");
console.log(e);
}
์ค๋ฅ : TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffe r, TypedArray, or DataView. Received undefined ->.writeFileSync์ ์ฌ์ฉ๋ฒ์ ์๋์ ๊ฐ๋ค. fs.writeFileSync(file, data[, options]) {Doc} https://nodejs.org/dist/latest-v18.x/docs/api/fs.html#fswritefilesyncfile-data-options |
||
| ์์ ๋ ์ฝ๋ : fs.writeFileSync(~)์์ file๋ช
๋ง์์ฑํ์ง์๊ณ data๋ ์ ์ํด์ฃผ๋ฉด์ ํด๊ฒฐ๋์๋ค. const fs = require('fs');
const folderName = process.argv[2] || 'Project'
try {
fs.mkdirSync(folderName);
// console.log(folderName);
fs.writeFileSync(`${folderName}/index.html`, '');
fs.writeFileSync(`${folderName}/app.js`, '');
fs.writeFileSync(`${folderName}/app.css`, '');
} catch (e) {
console.log("SOMETHING WENT WRONG!!");
console.log(e);
}
|
||
| chat gpt : ์ ์ฝ๋๋ ํ์ผ ์์คํ ๋ชจ๋์ธ fs ๋ชจ๋์ ์ฌ์ฉํ์ฌ ํด๋๋ฅผ ์์ฑํ๊ณ , ํด๋น ํด๋์ index.html ํ์ผ์ ์์ฑํ๋ ์ฝ๋์ ๋๋ค. ํ์ง๋ง, ํ์ฌ ์ฝ๋์์๋ index.html ํ์ผ์ ๋ด์ฉ์ ์์ฑํ์ง ์๊ณ ํ์ผ์ ์์ฑํ๊ณ ์์ต๋๋ค. ์ด ์ฝ๋์์๋ ๋ค์๊ณผ ๊ฐ์ด index.html ํ์ผ ๋ด์ฉ์ ์์ฑํ ์ ์์ต๋๋ค. ์ ์ฝ๋์์๋ index.html ํ์ผ ๋ด์ฉ์ผ๋ก "Welcome to my page!"๋ฅผ ๊ฐ์ง๋ HTML ํ์ด์ง๋ฅผ ์์ฑํ๊ณ ์์ต๋๋ค. ๋ํ, ์ฃผ์ ์ฒ๋ฆฌ๋ ๋ถ๋ถ์ ํ์ฑํํ์ฌ app.js์ app.css ํ์ผ๋ ์์ฑํ ์ ์์ต๋๋ค. |
728x90

