Programming/Node.js 4

Javascript ์ดํ•ดํ•˜๊ธฐ - Prototype / Class

์•Œ์•„๋‘๋ฉด ์ข‹์€ Javascript ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์€ ๋Œ€๋ถ€๋ถ„ Ajax ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž์—ฐ์Šค๋ ˆ Javascript๋ฅผ ์ ‘ํ•  ๊ธฐํšŒ๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ, ์ด๋ฒˆ์— Node.js ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ๋Š๊ผˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ๋งŒ๋‚œ Javascript๋Š” ์šฐ์ฃผ ๋จผ์ง€๋ณด๋‹ค ์ž‘์€ ์กด์žฌ๋ผ๋Š” ๊ฒƒ์„.. Prototype ํ†บ์•„๋ณด๊ธฐ Prototype ์€ Class ์— ๋Œ€ํ•œ ๋ฌธ๋ฒ•์„ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์ˆ˜์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฐœ๋…์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋‚˜๋Š” ํด๋ž˜์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” Java ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•ด์„œ Javascript์˜ Class ๋ฌธ๋ฒ•๋„ ๊ธˆ๋ฐฉ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ „ํ˜€ ์•„๋‹ˆ์—ˆ๋‹ค. Javascript๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ์–ธ์–ด๋กœ์จ, Class ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Š” ๋ณด๊ธฐ..

Programming/Node.js 2020.10.05

Node.js ์ดํ•ดํ•˜๊ธฐ - ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ Javascript ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ด๋‹ค. Node.js ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•œ ์ง€ 3์ผ ์ฐจ์ด๋‹ค. ์•ž์„œ ๊ณต๋ถ€ํ•œ ๋น„๋™๊ธฐ ๋…ผ ๋ธ”๋กœํ‚น I/O ๋ชจ๋ธ๊ณผ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด Node.js ๊ฐ€ ์–ด๋–ค ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ, ์œ„์˜ ๋‘ ๋ถ€๋ถ„์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ Javascript ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋ผ๋Š” ๋ง์ด ๊ต‰์žฅํžˆ ๋งŽ์ด ๋‚˜์™”๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋Š” ๋ญ๊ณ , ๋” ๊นŠ์ด ๋“ค์–ด๊ฐ€์„œ ์Šค๋ ˆ๋“œ์˜ ์ •์˜๋Š” ๋ฌด์—‡์ผ๊นŒ? ์˜ค๋Š˜์€ ๊ทธ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ ค๊ณ  ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ? ์š”์ฆ˜ ์ธํ„ฐ๋„ท ๋ฐˆ์œผ๋กœ ๋– ๋„๋Š” ์‚ฌ์ง„ ํ•œ ์žฅ์ด ์žˆ๋‹ค. ์œ„์˜ ์‚ฌ์ง„์—์„œ ๋…ธ์˜ˆ๋ผ๋Š” ์˜ˆ๊ฐ€ ์ข€ ๋งž์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์Šค๋ ˆ๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์„ธ์Šค๋ผ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ”„๋กœ์„ธ์Šค? ํ”„๋กœ์„ธ์Šค๋ผ๋Š” ๊ฒƒ์€..

Programming/Node.js 2020.09.27

Node.js ์ดํ•ดํ•˜๊ธฐ - ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋งŽ์€ ๋น„๋™๊ธฐ๋“ค์„ ์–ด๋– ํ•œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€๋Š”๋ฐ, ์™œ ๋น„๋™๊ธฐ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ• ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ๊ณผ์ •์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„๊นŒ? ์–ด์ œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด, Node.js ๋Š” V8 ์—”์ง„๊ณผ libuv๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , libuv๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ, ๋น„๋™๊ธฐ ๋…ผ ๋ธ”๋กœํ‚น I/O ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๋ ค๊ณ  ใ„ดใ„ดใ…ˆํ•œ๋‹ค. ์ด๋ฒคํŠธ? ์ด๋ฒคํŠธ๋Š” ์‹œ์Šคํ…œ ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ์ƒํƒœ์˜ ๋ณ€ํ™”๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ด๋ฒคํŠธ๋Š” ์‚ฌ์šฉ์ž์˜ ํด๋ฆญ, ๋งˆ์šฐ์Šค์˜ ์›€์ง์ž„, ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์ด๋‚˜ ์›น ํŽ˜์ด์ง€์˜ ํŠน์ • ์˜์—ญ์œผ๋กœ์˜ ์ด๋™ ๋“ฑ ์™ธ๋ถ€์˜ ํ™˜๊ฒฝ์— ์˜ํ•ด ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ๋กœ๋”ฉ๊ณผ ๊ฐ™์€ ์‹œ์Šคํ…œ์— ์˜ํ•ด ๋ฐœ..

Programming/Node.js 2020.09.26

Node.js ์ดํ•ดํ•˜๊ธฐ - ๋น„๋™๊ธฐ ๋…ผ ๋ธ”๋กœํ‚น I/O ๋ชจ๋ธ์— ๋Œ€ํ•ด

๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ RESTful API? ๋น„๋™๊ธฐ? ์–˜๋„ค๋“ค์ด ๋„๋Œ€์ฒด ๋ญ์ง€ ? ์–ผ๋งˆ ์ „ ๊ตญ๋น„ ์ง€์› ํ•™์›์„ ์ˆ˜๋ฃŒํ–ˆ๋‹ค. ์šฐ๋ฆฌ ์กฐ๋Š” LMS์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ€ด์ฆˆ ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœํ–ˆ๋Š”๋ฐ, ์œ ํ˜• ๋ณ„ ํ€ด์ฆˆ์— ๋Œ€ํ•œ CRUD๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ• ๊นŒ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ ์ž์˜์ , ํƒ€์˜์ ์œผ๋กœ Ajax ๋ฅผ ์ด์šฉํ•ด์„œ ๋น„๋™๊ธฐ๋กœ ํ€ด์ฆˆ CRUD ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜๋ฐ–์— ์—†์—ˆ๋Š”๋ฐ JSON์ด๋‚˜ RestController์—์„œ JSON ๊ฐ์ฒด๋ฅผ RequestBody๋กœ ๋ฐ›์•„์•ผ ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•œ ์ƒํƒœ๋กœ ์–ต์ง€๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ์ด์œ ๋กœ ์ด๋ฒˆ ํ•™์›์—์„œ์˜ ๋งˆ์ง€๋ง‰ ํ”„๋กœ์ ํŠธ ๋•Œ๋ฌธ์— ์‹œ์ž‘ํ•œ Node.js ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. Node.js ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? Node.js ๋Š” ํ•ด๋‹น ๋ฌธ์„œ์—์„œ Chrome V8 Javascript ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ Javascrip..

Programming/Node.js 2020.09.26