Banner

My Tech Blog (JS)

๋‚ด๊ฐ€ ๋ณด๋ ค๊ณ  ๋งŒ๋“  ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๐Ÿฆ๋ชฉํ‘œ์ด๋ฒคํŠธ, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ, ์ด๋ฒคํŠธ ๋ฒ„์Šค ๋ฐ addEventListener์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.๊ทธ๋ฆฌ๊ณ  jQuery์™€ Vanilla JavaScript์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋งํ•˜์ง€๋งŒ jQuery๋Š” ํ•œ๋•Œ ์›น ๊ฐœ๋ฐœ์—์„œ ํ•„์ˆ˜์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜€์ง€๋งŒ, ์ด์ œ๋Š” Vanilla JavaScript(์ˆœ์ˆ˜ JS)๋‚˜ React, Vue, Svelte ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋Œ€์ฒดํ•˜๋ฉด์„œ ์‚ฌ์šฉ์ด ์ค„์–ด๋“ค๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ addEventListener ์œ„์ฃผ๋กœ๋งŒ ์ •๋ฆฌํ–ˆ๊ณ  ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์ด๋ฒคํŠธ ์ข…๋ฅ˜๋งŒ ๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ์€ 6๋ฒˆ๋ถ€ํ„ฐ ์ฝ์œผ๋ฉด ๋œ๋‹ค. 1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ (JavaScript Event)์ด๋ฒคํŠธ(Event)๋Š” ์‚ฌ์šฉ์ž๋‚˜ ์‹œ์Šคํ…œ์ด ์›น ํŽ˜์ด์ง€์—์„œ ์ผ์œผํ‚ค๋Š” ๋™์ž‘์ด๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฒ„ํŠผ ํด..
โญ ๋ฌธ์„œ๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ์‹คํ–‰ํ•˜์žโญ jQuery ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋จผ์ € ๋กœ๋“œํ•˜์žโญ $ ์ถฉ๋Œ ๋ฐฉ์ง€ ํ•„์š” ์‹œ noConflict โญ ์ด๋ฒคํŠธ ์ค‘๋ณต ๋ฐฉ์ง€ off()โญ AJAX ์บ์‹ฑ ๋ฐฉ์ง€ (cache: false) โญ ๋™์  ์š”์†Œ์— ์ด๋ฒคํŠธ ์ ์šฉ on()โญ ์„ฑ๋Šฅ ์ตœ์ ํ™” (map(), .append() ์ตœ์†Œํ™”) 1. ๋ฌธ์„œ๊ฐ€ ์™„์ „ํžˆ ๋กœ๋“œ๋œ ํ›„ ์‹คํ–‰ํ•˜๊ธฐ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌธ์„œ ๊ฐ์ฒด๋ฅผ ๋จผ์ € ๋ถˆ๋Ÿฌ์™€์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ HTML์ด ๋กœ๋“œ๋˜๊ธฐ ์ „์— jQuery ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์š”์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.๐Ÿ“Œ ํ•ด๊ฒฐ์ฑ…: $(document).ready() ์‚ฌ์šฉ ๋˜๋Š” ๋ณ€๊ฒฝ๋  ํ…์ŠคํŠธ โญ• [๋ฐฉ๋ฒ• 2] $(document).ready() ์‚ฌ์šฉ ๋ณ€๊ฒฝ๋  ํ…์ŠคํŠธ$(document).ready()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์„œ๊ฐ€ ์™„์ „ํžˆ ..
# ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด(Template Literal)ES6๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋„์ž…๋œ ๋ฌธ์ž์—ด ํ‘œ๊ธฐ๋ฒ•๋ฌธ์ž์—ด ์ƒ์„ฑ์‹œ ๋”ฐ์˜ดํ‘œ ๋Œ€์‹ , ๋ฐฑํ‹ฑ(`)์„ ์‚ฌ์šฉvar str_01 = `hello world`;//๋ฐฑํ‹ฑ ์‚ฌ์šฉconst x='x';const y='y';const z='z';console.log(`${x}๋Š” x, ${y}๋Š” y, ${z}๋Š” z์ด๋‹ค. `); //x๋Š” x, y๋Š” y, z๋Š” z์ด๋‹ค. โ–ถ๏ธŽ ๋ฐฑํ‹ฑ(`)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ JS ES6(ECMAScript 2015)๋ถ€ํ„ฐ ๋„์ž…๋˜์—ˆ๋‹ค.โ–ถ๏ธŽ ๊ฐœํ–‰ ๋ฌธ์ž(\n)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ์ž๋™ ์ค„๋ฐ”๊ฟˆ โ–ถ๏ธŽ ์ƒ๊น€์ƒˆ๊ฐ€ ์ž‘์€๋”ฐ์›€ํ‘œ(')์™€ ๋น„์Šทํ•˜๋‹ˆ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๋„๋ก ์ฃผ์˜# ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด - ๋ฐฑํ‹ฑ(`)์˜ ๊ธฐ๋Šฅ ์ค„๋ฐ”๊ฟˆ(๊ฐœํ–‰: Multi-line strings)  โ–ถ๏ธŽ ๋ฐฑํ‹ฑ(`)์œผ๋กœ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜๋ฉด..
// JSON ๋ฐ์ดํ„ฐ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ JS ์‚ฌ์šฉ๋ฒ•// [1] : ๋ฐ์ดํ„ฐ const person = [ `{"name":"์ด์ˆœ์‹ ","age":20,"nationality":"๋Œ€ํ•œ๋ฏผ๊ตญ"}`, {"name":"๋งฅ์•„๋”","age":30,"nationality":"๋ฏธ๊ตญ"}, {"name":"์—˜๋ฆฌ์ž๋ฒ ์Šค","age":40,"nationality":"์˜๊ตญ"}, {"name":"์ž”๋‹ค๋ฅดํฌ","age":50,"nationality":"ํ”„๋ž‘์Šค"},]; console.log(typeof person); // objectconsole.log(typeof person[0]); // stringconsole.log(typeof person[1]); // object ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ๋ฉด string ..
JSON๊ณผ XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ํ˜•์‹์ด๋‹ค.1. XMLXML์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ด๋ฉฐ EXtensible Markup Language์˜ ์•ฝ์ž์ด๋‹ค. - XML์€ ๋‹ค๋ฅธ ๋ชฉ์ ์˜ ๋งˆํฌ์—… ์–ธ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค๋ชฉ์  ๋งˆํฌ์—… ์–ธ์–ด- XML์€ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๋ผ๋ฆฌ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์†์‰ฝ๊ฒŒ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.- XML์€ ์ƒˆ๋กœ์šด ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค์–ด ์ถ”๊ฐ€ํ•ด๋„ ๊ณ„์†ํ•ด์„œ ๋™์ž‘ํ•˜๋ฏ€๋กœ, ํ™•์žฅ์„ฑ์ด ์ข‹๋‹ค. - XML์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๊ฒƒ๋งŒ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค.- XML์€ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ํ˜•์‹์˜ ์–ธ์–ด๋กœ ๋ชจ๋“  XML ๋ฌธ์„œ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„๋‹ค.XML ๊ธฐ๋ฐ˜์˜ ์–ธ์–ด XHTML, SVG,..
๋ธŒ๋ผ์šฐ์ € ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ๋‚˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐ™์€ Client๋“ค์ด ์–ด๋–ป๊ฒŒ Server์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์„๊นŒ? 1. HTTP(Hypertext Transfer Protocal)Client ์™€ Server ์ด ์–ด๋–ป๊ฒŒ Hypertext๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์„ ์ง€ ๊ทœ์•ฝํ•œ ํ”„๋กœํ† ์ฝœClient๊ฐ€ Server์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ requestํ•˜๋ฉด, Server๋Š” ๊ทธ์— ๋งž๋Š” response๋ฅผ Client๋กœ ๋ณด๋ƒ„ 2. AJAX(Asynchronous JavaScript And XML)์›นํŽ˜์ด์ง€์—์„œ ๋™์ ์œผ๋กœ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” ๋ธŒ๋ผ์šฐ์ €API์—์„œ ์ œ๊ณตํ•˜๋Š” XMLHttpRequest(XHR) ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ๋‹ค.ํ˜น์€ fecth() API๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.  3. XMLhtm..
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๊ฐ„๋‹จํžˆ ํฌ์ŠคํŒ…ํ•˜๋ ค๊ณ  ์‹ฌํ”Œํ•œ To Do List๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค!    1. ๊ตฌ๊ธ€ํฐํŠธ, ์Šคํƒ€์ผ์‹œํŠธ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐ- `style.css`์™€ `script.js` ์—ฐ๊ฒฐ- ๊ตฌ๊ธ€ ํฐํŠธ `Poppins`  ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Embed Code๋ฅผ 2.  ์ „์ฒด  ์ ์šฉ๋  css ์„ค์ • & container์— ๋ฐฐ๊ฒฝ ์ถ”๊ฐ€โšก  ํฐํŠธ๋Š” ๊ตฌ๊ธ€ ํฐํŠธ `Poppins` ๋กœ ์„ค์ • โšก `box-sizing: border-box;`์š”์†Œ์˜ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ `ํŒจ๋”ฉ(padding)`๊ณผ `ํ…Œ๋‘๋ฆฌ(border)`๊นŒ์ง€ ํฌํ•จํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ์†์„ฑ. ๊ธฐ๋ณธ์ ์œผ๋กœ CSS์—์„œ box-sizing์˜ ๊ธฐ๋ณธ๊ฐ’์€ `content-box`์ด๋‹ค. `content-box`๋Š” ์š”์†Œ์˜ `width`์™€ `height`๊ฐ€ ์ฝ˜ํ…์ธ  ์˜์—ญ..
์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ promise, async await์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณด์ž!1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ์ฃผ๋กœ ์‘๋‹ต ์‹œ๊ฐ„์ด ๊ธด ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ด ์žˆ์„ ๊ฒฝ์šฐ ์ด๋ฅผ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ๋ฐ˜์‘์ด ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.js๋Š” ๋™๊ธฐ์ ์ธ ์–ธ์–ด์ด๋‚˜  ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ธด ์ž‘์—…(์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š” ์ž‘์—…)์„ ํ•˜๋Š” ๊ฒฝ์šฐ ๋น„๋™๊ธฐ ์ž‘์—…์„ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.์•„๋ž˜๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ์ด๋‹ค.getHotels()๋Š” ์„œ๋ฒ„์—์„œ ํ˜ธํ…”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ํ•จ์ˆ˜์ด๋‹ค.๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” getHotels()์˜ ์‘๋‹ต๊ฐ’์„ ๋ฐ›์•„ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค.function ..
์ธ์ ˆ๋ฏธ์˜€๋˜๊ฒƒ
'JS' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก
์ƒ๋‹จ์œผ๋กœ