์ค๋ ๊ณต๋ถํ๋ฉด์ ์ธ์ฌ์ดํธ, ๊ฐ๋ ์์ฝ ๋ฑ
์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๊ฒฝ
ECMAScript: ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ ๋ํ ํ์ค
patrick Charollais | ECMA-262 - Ecma lnternational
DOM(Document Object Model): ์นํ์ด์ง ์ ์ด๋ฅผ ์ํ ํ์ค
BOM(Browser Object Model): ์นํ์ด์ง ์ธ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ ์ ์ด๋ฅผ ์ํ ํ์ค
Web APIs: ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๊ณตํ๋ ์น ๊ธฐ๋ฅ์ ์ํ ํ์ค
๐ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ (Client-side)
โ
์ ์
ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์๊ฐ ์ง์ ๋ณด๋ ๋ธ๋ผ์ฐ์ ์ชฝ์์ ๋์ํ๋ ๋ถ๋ถ์ด์์.
์ฆ, HTML, CSS, JavaScript๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋์ด, ํ๋ฉด์ ๋ณด์ด๊ณ ์ฌ์ฉ์์ ํ๋์ ๋ฐ์ํ๋ ๊ฑฐ์์.
โ ํน์ง
โ ์์
์ผํ๋ชฐ ์น์ฌ์ดํธ์์ ์ ํ ๋ชฉ๋ก์ ๋ณด๊ณ , "์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ" ๋ฒํผ์ ๋๋ฅด๋ฉด ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋ ๊ธฐ๋ฅ
โ ์ด๊ฑด ๋ธ๋ผ์ฐ์ ์์ JavaScript๊ฐ ์คํ๋ ๊ฒฐ๊ณผ = ํด๋ผ์ด์ธํธ ์ฌ์ด๋
๐ฅ๏ธ ์๋ฒ ์ฌ์ด๋ (Server-side)
์๋ฒ์ฌ์ด๋๋ ๋ธ๋ผ์ฐ์ ์๋ ๋จ์ด์ง ์๋ฒ์์ ์คํ๋๋ ์ฝ๋์์.
Node.js ๊ฐ์ ๋ฐฑ์๋ ๊ธฐ์ ์ด ์ฌ๊ธฐ์ ํด๋น๋ผ์. ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์์ฒญ(request)์ ๋ณด๋ด๋ฉด, ์๋ฒ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํด์ ์๋ต(response)์ ๋๋ ค์ค์.
โ ํน์ง
โ ์์
๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ ์ ๋, ์ ๋ ฅํ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๊ฐ ์๋ฒ์ ์ ๋ฌ๋๊ณ , ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ธํ ํ ๋ก๊ทธ์ธ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๋๋ ค์ฃผ๋ ๊ฒ
โ ์ด๊ฑด ์๋ฒ์์ Node.js๊ฐ ๋์ํ ๊ฒฐ๊ณผ = ์๋ฒ ์ฌ์ด๋
๋ ธ๋์ ์ข ๋ฅ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ ธ๋
| ์ข ๋ฅ | ์ค๋ช | nodeName | nodeType | nodeValue |
|---|---|---|---|---|
| ๋ฌธ์ ๋ ธ๋ | ๋ฌธ์ | #document | 9 | null |
| ์์ ๋ ธ๋ | ํ๊ทธ | ํ๊ทธ์ ์ด๋ฆ | 1 | null |
| ์์ฑ ๋ ธ๋ | ์์์ ์์ฑ | ์์ฑ์ ์ด๋ฆ | 2 | ์์ฑ์ ๊ฐ |
| ํ ์คํธ ๋ ธ๋ | ์์์ ๋ด์ฉ | #text | 3 | ๋ฌธ์์ด ๊ฐ |
๋ ธ๋ ์ฐพ๊ธฐ
ํ๊ทธ์ id ๋ฅผ ์ด์ฉํ์ฌ ๋
ธ๋ ์ฐพ๊ธฐ
document.getElementById (id): id ์์ฑ๊ฐ์ ํด๋นํ๋ ๋
ธ๋๊ฐ์ฒด๋ฅผ ๋ฐํ
const purchases = document.getElementById("purchases");
ํ๊ทธ๋ช
์ ์ด์ฉํ์ฌ ๋
ธ๋ ์ฐพ๊ธฐ
์์๋
ธ๋ getElementsByTagName(tagName)
์ง์ ํ ์์๋
ธ๋์ ํ์ ๋ชจ๋ ์์๋ฅผ ๋์์ผ๋ก ํ๊ทธ๋ช
(tagName) ์ ํด๋นํ๋ ์์๋
ธ๋๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํ tagName ์ โ*โ์ ์ง์ ํ๋ฉด ๋ชจ๋ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํ
const liList = purchases.getElementsByTagName("li");
ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ๋ ธ๋ ์ฐพ๊ธฐ
๋ถ๋ชจ ์์ ๋ ธ๋ ์ฐพ๊ธฐ
| ์์๋ ธ๋์ ์์ฑ | ์ค๋ช |
|---|---|
| childNodes | ์์ ๋ ธ๋๊ฐ ๋ฐฐ์ด ํํ๋ก ์ ์ฅ โ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด |
| firstChild | ์ฒซ๋ฒ์งธ ์์ ๋ ธ๋(์์, ํ ์คํธ, ์ฃผ์) |
| firstElementChild | ์ฒซ๋ฒ์งธ ์์ ์์ ๋ ธ๋ |
| lastChild | ๋ง์ง๋ง ์์ ๋ ธ๋(์์, ํ ์คํธ, ์ฃผ์) |
| lastElementChild | ๋ง์ง๋ง ์์ ์์ ๋ ธ๋ |
| parentNode | ๋ถ๋ชจ ๋ ธ๋ |
const purchases = document.getElementById('purchases'); // id๋ฅผ ์ถ์ถํ๋ ์ฝ๋
const firstItem = purchases.firstElementChild; // ์ฒซ๋ฒ์งธ ์์๋ง ์ ํํจ
const lastItem = purchases.lastElementChild; // ๋ง์ง๋ง ์์๋ง ์ ํ
const liList = purchases.childNodes; // ์ ์ฌ๋ฐฐ์ด ๊ฐ์ฒด ์ถ์ถ
ํ์ ๋ ธ๋ ์ฐพ๊ธฐ
| ์์ฑ | ์ค๋ช |
|---|---|
| previousSibling | ๋ฐ๋ก ์์ ํ์ ๋ ธ๋(์์, ํ ์คํธ, ์ฃผ์) |
| previousElementSibling | ๋ฐ๋ก ์์ ํ์ ์์ ๋ ธ๋ |
| nextSibling | ๋ฐ๋ก ๋ค์ ํ์ ๋ ธ๋(์์, ํ ์คํธ, ์ฃผ์) |
| nextElementSibling | ๋ฐ๋ก ๋ค์ ํ์ ์์ ๋ ธ๋ |
const purchases = document.getElementById("purchases");
const secondItem = purchases.childNodes[3];
const firstItem = secondItem.previousElementSibling;
const lastItem = secondItem.nextElementSibling;
class ์์ฑ์ผ๋ก ๋
ธ๋ ์ฐพ๊ธฐ
document.getElementsByClassName(className): class ์์ฑ๊ฐ์ด className ์ธ ์์ ๋
ธ๋์ ๋ชฉ๋ก์ ๋ฐํ
const purchases = document.getElementsByClassName("list")[0];
CSS ์ ๋ ํฐ ์ด์ฉ
var purchases = document.querySelector(".list");
var purchases = document.querySelector("#purchases");
var purchases = document.querySelectorAll("ul")[0];