์ด์ ๊น์ง JavaScript ๊ธฐ๋ณธ๋ฌธ๋ฒ์ ๋ํ์ฌ ์์๋ณด์๊ณ ์ด๋ฒํฌ์คํ ์์๋ WEB UI๊ฐ๋ฐ์ ๋ํ์ฌ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ํ์ต ๋ชฉํ
- JavaScript์ ๊ธฐ๋ณธ๋ฌธ๋ฒ์ ์ดํดํ๋ค.
- DOM, Browser Event, Ajax์ด ๊ฐ๊ฐ ๋ฌด์์ธ์ง ์ดํดํ๊ณ , ์ด๋ฅผ ํ์ฉํด ์นํ๋ฉด์ ์ ์ดํ ์ ์๋ค.
- JSP์ ๋ผ์ดํ์ฌ์ดํด์ ์ดํดํ๊ณ redirect & forward ์ scope๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์๋ค.
- JSTL๊ณผ EL์ ์ฌ์ฉํ ์ ์๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์นํ๊ณ ๊ฐ๋จํ SQL์ ์ฌ์ฉํ ์ ์๋ค.
- Maven์ ์ดํดํ๊ณ Maven์ ์ด์ฉํ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ ์ ์๋ค.
- JDBC ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋ค.
- Web API๋ฅผ ์ดํดํ๋ค.
๋ชฉ์ฐจ
- window ๊ฐ์ฒด(setTimeout)
- DOM๊ณผ querySelector
- Browser Event, Event object, Event handler
- Ajaxํต์ ์ ์ดํด
- JavaScript Debugging
1) window ๊ฐ์ฒด(setTimeout)
ํต์ฌ ๊ฐ๋
- setTimeout
- ๋น๋๊ธฐ
window ๊ฐ์ฒด
๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด, window๋ผ๋ ๊ฐ์ฒด๊ฐ ์์ต๋๋ค. window์๋ ๋ง์ ๋ฉ์๋๋ค์ด ์กด์ฌํ๋ฉฐ, ์๋์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. window๋ ๋ํดํธ์ ๊ฐ๋ ์ด๋ฏ๋ก ์๋ตํ ์ ์์ต๋๋ค.
1
2
|
window.setTimeout()
setTimeout() //window๋ ์ ์ญ๊ฐ์ฒด๋ผ์ ์๋ต ๊ฐ๋ฅํ๋ค.
|
cs |
setTimeout ํ์ฉ
setTimeout์ ๋ฏ์ค๊ฒ ๋์ํฉ๋๋ค. ์ธ์๋ก ํจ์๋ฅผ ๋ฐ๊ณ ์์ผ๋ฉฐ, ๋ณดํต ๋์ค์ ์คํ๋๋ ํจ์๋ฅผ ์ฝ๋ฐฑํจ์๋ผ๊ณ ๋ ํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ์ ์ ์๋ ํน์ง์ด ์์ต๋๋ค. ์ฐธ๊ณ ๋ก ํจ์๋ฅผ ๋ฐํํ ์๋ ์๊ณ ์.
setTimeout์ ์คํ์ ๋น๋๊ธฐ(asynchronous)๋ก ์คํ๋์ด ๋๊ธฐ์ ์ธ ๋ค๋ฅธ ์คํ์ด ๋๋์ผ ์คํ๋ฉ๋๋ค.
1
2
3
4
5
6
7
8
9
10
|
function run() {
console.log("start");
setTimeout(function() {
var msg = "hello codesquad";
console.log(msg); //์ด ๋ฉ์์ง๋ ์ฆ์ ์คํ๋์ง ์์ต๋๋ค.
}, 1000);
console.log("end");
}
run();
|
cs |
์ถ๋ ฅ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
- start
- end
- hello codesquad
์ฆ setTimeout ์์ ํจ์(์ฝ๋ฐฑํจ์)๋ runํจ์์ ์คํ์ด ๋๋๊ณ ๋์, (์ ํํ๋ stack์ ์์ฌ์๋ ํจ์์ ์คํ์ด ๋๋๊ณ ๋์ ์คํ๋จ) ์คํ๋ฉ๋๋ค.
์ด ์ธ์๋ setInterval๊ณผ ๊ฐ์ ํจ์๋ ์์ต๋๋ค.
- setInterval์ ์ผ์ ํ ์๊ฐ๊ฐ๊ฒฉ์ผ๋ก ์์ ์ ์ํํ๊ธฐ ์ํด์ ์ฌ์ฉ๋๋ค. → ๋ฐ๋ณต์ํ.
- setTimeout์ ์ง์ ๋ ์๊ฐ์ ๊ธฐ๋ค๋ฆฐ ํ ์์ ์ ์ํํ๊ณ , ์ง์ ๋ ์๊ฐ ์ฌ์ด์ ์์ ์๊ฐ์ด ์ถ๊ฐ๋๋ค. → 1๋ฒ์ํ
2) DOM๊ณผ querySelector
ํต์ฌ ๊ฐ๋
- DOM Tree
- DOM API
- querySelector
DOM
๋ธ๋ผ์ฐ์ ์์๋ HTML์ฝ๋๋ฅผ DOM(Document Object Model)์ด๋ผ๋ ๊ฐ์ฒดํํ์ ๋ชจ๋ธ๋ก ์ ์ฅํฉ๋๋ค. ๊ทธ๋ ๊ฒ ์ ์ฅ๋ ์ ๋ณด๋ฅผ DOM Tree๋ผ๊ณ ํฉ๋๋ค. ๊ฒฐ๊ตญ HTML element๋ Tree ํํ๋ก ์ ์ฅ๋ฉ๋๋ค.
DOM Tree
๋ณต์กํ DOM Tree๋ฅผ ํ์ํ๊ธฐ ์ํด JavaScript๋ก ํ์์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ฉด ๋๋ฌด ํ๋ญ๋๋ค. ๊ทธ๋์ ๋ธ๋ผ์ฐ์ ์์๋ DOM(document object model)์ด๋ผ๋ ๊ฐ๋ ์ ํตํด์, ๋ค์ํ DOM API(ํจ์ ๋ฌถ์์ ๋)๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ DOM Tree์ฐพ๊ณ ์กฐ์ํ๋ ๊ฑธ ์ฝ๊ฒ ๋์์ฃผ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฉ์๋๋ฅผ(DOM API)๋ฅผ ์ ๊ณตํฉ๋๋ค.
โ getElementById()
document.getElementById(id);
์ฃผ์ด์ง ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ id ์์ฑ์ ๊ฐ์ง ์์๋ฅผ ์ฐพ๊ณ , ์ด๋ฅผ ๋ํ๋ด๋ Element ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค. ID๋ ๋ฌธ์ ๋ด์์ ์ ์ผํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํน์ ์์๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ๋ ์ ์ฉํฉ๋๋ค.
๋งค๊ฐ๋ณ์๋ id๋ก ์ฐพ์ผ๋ ค๋ ์์ ID์ ๋๋ค. ID๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ ๋ฌธ์์ด๋ก, ๋ฌธ์ ๋ด์์ ์ ์ผํด์ผ ํฉ๋๋ค. ์ฆ, ํ๋์ ๊ฐ์ ํ๋์ ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐํ๊ฐ์ ์ฃผ์ด์ง ID์ ์ผ์นํ๋ DOM ์์๋ฅผ ๋ํ๋ด๋ Element ๊ฐ์ฒด. ๋ฌธ์ ๋ด์ ์ฃผ์ด์ง ID๊ฐ ์์ผ๋ฉด null.
ID๊ฐ ์๋ ์์์ ์ ๊ทผํ๋ ค๋ฉด Document.querySelector()๋ฅผ ์ฌ์ฉํ์ธ์. ๋ชจ๋ ์ ํ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
โ querySelector()
document.querySelector(selectors);
DOM์ ์ฐพ๋๋ฐ ํนํ ์ ์ฉํ querySelector ๋ฉ์๋์ ๋๋ค.
๋งค๊ฐ๋ณ์๋ ํ๋ ์ด์์ ์ ํ์๋ฅผ ํฌํจํ DOMString ์ด๋ฉฐ ์ ํจํ CSS ์ ํ์์ฌ์ผ๋ง ํ๋ค.
๋ฐํ๊ฐ์ ์ ๊ณตํ CSS ์ ํ์๋ฅผ ๋ง์กฑํ๋ ์ฒซ ๋ฒ์งธ Element ๊ฐ์ฒด๋ฅผ ๋ฐํํ๊ณ , ๊ฒฐ๊ณผ๊ฐ ์๋ค๋ฉด null์ ๋ฐํํ๋ค.
โ css selector
selector๋ฌธ๋ฒ์ querySelector์ querySelectorAll๋ฉ์๋์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, css ์คํ์ผ์ ๋ถ์ฌํ์ ๋ ์ตํ๋
selector๋ฌธ๋ฒ๊ณผ ๋์ผํ๋ค๊ณ ์๊ฐํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด์ธ์ ๋ค๋ฅธ ํจ์๋ค...
- removeChild(child) : ์ญ์
- replaceChild(newChild, oldChild) : ๋์ฒด
- appendChild(child) : ๋ ธ๋์ ๋ง์ง๋ง ์์์ผ๋ก ์ฃผ์ด์ง ์๋ฆฌ๋จผํธ ์ถ๊ฐํ๋ค.
- document.createElement(tagname) : tagname ์๋ฆฌ๋จผํธ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ค.
- document.createTextNode(data) : ํ ์คํธ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ค.
3) Browser Event, Event object, Event handler
Event
๋ธ๋ผ์ฐ์ ์๋ ๋ง์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํฌ๊ธฐ๋ฅผ ๋ง์ฐ์ค๋ก ์กฐ์ ํ ๋๋, ์คํฌ๋กค์ ํ ๋๋, ๋ง์ฐ์ค๋ก ์ด๋ํ๊ฑฐ๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ ํํ ๋๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ฒคํธ๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์์์ผ์ฃผ๋, ์ฐ๋ฆฌ๋ ๊ทธ๋ ์ด๋ค ์ผ์ ํ๋ผ๊ณ ํ ์ผ์ ๋ฑ๋กํ ์๊ฐ ์์ต๋๋ค.
๋ค์ ๋งํด, HTML์๋ฆฌ๋จผํธ๋ณ๋ก ์ด๋ค ์ด๋ฒคํธ(์ฃผ๋ก ํค๋ณด๋๋ ๋ง์ฐ์ค ๊ด๋ จ)๊ฐ ๋ฐ์ํ์ ๋ ํน์ ํ์๋ฅผ(์ด๋ค ์ผ) ํ๊ณ ์ถ๋ค๋ฉด, ๋์์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ๊ณ ์ด๋ค ์ผ์ ๋ฑ๋กํ๋ฉด ๋๋ค.
๊ทธ๊ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
์ด๋ฒคํธ ๋ฑ๋ก
์ด๋ฒคํธ ๋ฑ๋ก ํ์ค๋ฐฉ๋ฒ์ ๋๋ค. addEventListener ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
1
2
3
4
|
var el = document.querySelector(".outside");
el.addEventListener("click", function(){
//do something..
}, false);
|
cs |
addEventListener ํจ์์ ๋ ๋ฒ์งธ ์ธ์๋ ํจ์์ ๋๋ค.
์ด ํจ์๋ ๋์ค์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์คํ๋๋ ํจ์๋ก ์ด๋ฒคํธํธ๋ค๋ฌ(Event Handler) ๋๋ ์ด๋ฒคํธ๋ฆฌ์ค๋(Event Listener)๋ผ๊ณ ํฉ๋๋ค.
์ฝ๋ฐฑํจ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์คํ๋ฉ๋๋ค.
์ด๋ฒคํธ ๊ฐ์ฒด
๋ธ๋ผ์ฐ์ ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ํธ์ถํ ๋, ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ์ด๋ฒคํธ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ๋ฆฌ์ค๋ ํจ์์ ์ ๋ฌํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฒคํธ๋ฆฌ์ค๋ ์์์๋ ์ด๋ฒคํธ๊ฐ์ฒด๋ฅผ ํ์ฉํด์ ์ถ๊ฐ์ ์ธ ์์ ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
1
2
3
4
5
|
var el = document.getElementById("outside");
el.addEventListener("click", function(evt){
console.log(evt.target);
console.log(evt.target.nodeName);
}, false);
|
cs |
๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๊ฑด event.target์ ๋๋ค. event.target์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ element๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
element๋ ๊ฐ์ฒด์ด๋ฏ๋ก ์์ nodeName์ด๋ classname๊ณผ ๊ฐ์ด element๊ฐ ๊ฐ์ง ์์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด์ธ์ ์๋ง์ eventType
ํค๋ณด๋ ์ด๋ฒคํธ
์ด๋ฒคํธ๋ช | ๋ฐ์ํ๋ ์์ |
keydown | ํค๊ฐ ๋๋ ธ์ ๋ |
keypress | ์ฌํํธ, Fn, CapsLock ์ ์ ์ธํ ํค๊ฐ ๋๋ฆฐ ์ํ์ผ ๋(์ฐ์์ ์ผ๋ก ์คํ๋จ.). |
keyup | ํค ๋๋ฆ์ด ํด์ ๋ ๋ |
๋ง์ฐ์ค ์ด๋ฒคํธ
์ด๋ฒคํธ๋ช | ๋ฐ์ํ๋ ์์ |
mousedown | ํฌ์ธํ ์ฅ์น ๋ฒํผ์ด ์๋ฆฌ๋จผํธ ์์์ ๋๋ ธ์ ๋. |
mouseup | ํฌ์ธํ ์ฅ์น ๋ฒํผ์ด ์๋ฆฌ๋จผํธ ์์์ ๋์์ ๋. |
click | ํฌ์ธํ ์ฅ์น ๋ฒํผ(๋ชจ๋ ๋ฒํผ; ์ฃผ ๋ฒํผ๋ง ํด๋น๋ ์์ )์ด ์๋ฆฌ๋จผํธ์์ ๋๋ ธ๋ค๊ฐ ๋์์ ๋. |
wheel | ํฌ์ธํ ์ฅ์น์ ํ ๋ฒํผ์ด ์ด๋ค ๋ฐฉํฅ์ด๋ ํ์ ๋์์ ๋. |
4) Ajaxํต์ ์ ์ดํด
ํต์ฌ ๊ฐ๋
- XMLHTTPRequest
- Ajax
๋ธ๋ผ์ฐ์ ์ ์๋ก๊ณ ์นจ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ป์ด์ค๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
์ด๋ ์ฌ์ฉ์๊ฐ ๋ ๋น ๋ฅด๊ฒ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ์๋ก๊ณ ์นจ ์์ด ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ ์ข์ UX(User Experience)์ ํด๋นํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. (์๋ก๊ณ ์นจ ์์ด ์ผ๋ถ๋ถ๋ง ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๊ฐ์ ธ์จ๋ค.)
์ด๋ป๊ฒ ๊ตฌํํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
1. Ajax (XMLHTTPRequest ํต์ )
์ด ๊ธฐ์ ์ ์น์ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ ๋, ๋ธ๋ผ์ฐ์ ์๋ก๊ณ ์นจ ์์ด ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๊ฒ์ด ์ข๊ฒ ๋ค๋ ์๊ฐ์์ ์ถ๋ฐํ์ต๋๋ค. ๋ ์ข์ UX๋ฅผ ์ ๊ณตํ ์ ์๋ ๊ธฐ์ ์ ๋๋ค.
ํญ์ ๋๋ฅผ๋๋ง๋ค ์ปจํ ์ธ ๊ฐ ๋ฌ๋ผ์ง๋ ์๋น์ค๋ฅผ ์๊ฐํ์ ๋ ๋๋ฅด์ง๋ ์์ ํญ์ ์ปจํ ์ธ ๊น์ง ์ด๊ธฐ๋ก๋ฉ์์ ์ ๋ชจ๋ ๋ถ๋ฌ์จ๋ค๋ฉด ์ด๊ธฐ๋ก๋ฉ์๋์ ์ํฅ์ ์ค ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋์ ์ผ๋ก ํ์ํ ์์ ์ ์ปจํ ์ธ ๋ฅผ ๋ฐ์์์ ํํํ๋ฉด ๋ ์ข์ต๋๋ค.
์ด ๊ฒฝ์ฐ๊ฐ Ajax๊ธฐ์ ์ ํ์ฉํ ์ ์๋ ๋ํ์ ์ธ ๊ฒฝ์ฐ์ ๋๋ค.
Ajaxํต์ ์ ์ดํด
Ajax ํต์ ์ผ๋ก๋ XML, Plain Text, JSON ๋ฑ ๋ค์ํ ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์ด ํธ๋ฆฌํ JSONํฌ๋งท์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค
- Ajax : ๋น๋๊ธฐ ํต์ (์๋ก๊ณ ์นจ ์์ด ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ๋ฐ์์ค๋ ํต์ ๋ฒ)
-Ajax๋ฅผ ์คํํ๊ธฐ ์ํด์๋ XMLHTTPRequest() ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ๋ฐ์์ค๊ณ open(์๋ฒ๋ฅผ ์ฐ๋ค) send(์์ฒญ์ ๋ณด๋ธ๋ค) ๋ฉ์๋ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค. - Json : Ajax๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ํฌ๋งท ์ค ํ๋.
(Ajax๋ ๋ค์ํ ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ฐ, ๋ณดํต์ ์ฌ์ฉ์ด ํธ๋ฆฌํ Json ํฌ๋งท์ ์ฌ์ฉํ๋ค. ์ฌ๋๋ ์ฝ๊ธฐ ํธํ๊ณ ๊ธฐ๊ณ๋ ์ฝ๊ธฐ ํธํด์.)
2. AJAX ์คํ์ฝ๋
AJAX ์คํ ์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.
์๋ ๋ฐฉ๋ฒ์ XMLHTTPRequest ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํ์ค๋ฐฉ๋ฒ์ ๋๋ค.
1
2
3
4
5
6
7
8
|
function ajax(data) {
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", function() {
console.log(this.responseText);
});
oReq.open("GET", "http://www.example.org/getData?data=data");//parameter๋ฅผ ๋ถ์ฌ์ ๋ณด๋ผ์์์.
oReq.send();
}
|
cs |
XMLHttpRequest๊ฐ์ฒด๋ฅผ ์์ฑํด์, open๋ฉ์๋๋ก ์์ฒญ์ ์ค๋นํ๊ณ , send๋ฉ์๋๋ก ์๋ฒ๋ก ๋ณด๋ ๋๋ค. ์์ฒญ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋๋ฉด(์๋ฒ์์ ์๋ต์ด ์ค๋ฉด) load์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ , ์ฝ๋ฐฑํจ์๊ฐ ์คํ๋ฉ๋๋ค.
์ฝ๋ฐฑํจ์๊ฐ ์คํ๋ ๋๋ ์ด๋ฏธ ajaxํจ์๋ ๋ฐํํ๊ณ ์ฝ์คํ์์ ์ฌ๋ผ์ง ์ํ์ ๋๋ค. ์ด๋ setTimeoutํจ์์ ์ฝ๋ฐฑํจ์์ ์คํ๊ณผ ์ ์ฌํ๊ฒ ๋์ํ๋ '๋น๋๊ธฐ'๋ก์ง ์ ๋๋ค.
์ฐธ๊ณ ์๋ฃ ๋งํฌ↓
ํต์ฌ ๊ฐ๋
- chrome developer tools
- debugging
์๋ฐ์คํฌ๋ฆฝํธ๋ ์คํ๋จ๊ณ(๋ฐํ์)์์ ๋ฒ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋ฉ๋๋ค. ๊ทธ ํ์ด๋ฐ์ ์ด๋๊ฐ ๋ฌธ์ ์ธ์ง ๋ฐ๋ก ํ์ธํ๋ ๊ฒ์ ๋ฒ๊ทธ๋ฅผ ์ก๋๋คํ์ฌ ๋๋ฒ๊น ์ด๋ผํ๊ณ , ๋๋ฒ๊น ์ ํ ๋ ํฌ๋กฌ ๊ฐ๋ฐ์๋๊ตฌ๋ฅผ ์ด์ฉํ์ฌ ๋๋ฒ๊น ํด๋ณผ ์ ์์ต๋๋ค.
๋๋ฒ๊น ์ปจํธ๋กค
- Pause, Continue : ์ฒซ ๋ฒ์งธ ๋ฒํผ์ ํ์์๋ Pause ๋ฒํผ ์ํ์ธ๋ฐ ๋ธ๋ ํฌ์ธํธ๊ฐ ์กํ ์ํ์์ Continue ๋ฒํผ์ด ๋ฉ๋๋ค. ๋ค๋ฅธ ๋ธ๋ ์ดํฌํฌ์ธํธ๊ฐ ์กํ ๋๊น์ง ์ฝ๋๋ฅผ ์งํํฉ๋๋ค.
- Step over next function call : ์คํ ์ค๋ฒ๋ ์ฝ๋ ๋ผ์ธ์ ํ ์คํญ ์งํํ๋๋ฐ ํ์ฌ ์คํ ๋ผ์ธ์ ํจ์ ์คํ ์ฝ๋๊ฐ ์๋ค๋ฉด ํจ์๋ ์คํํ๋๋ฐ ์ด๋ ํจ์ ์์ ์ฝ๋๋ก๋ ์ง์ ํ์ง ์์ต๋๋ค. ์ฆ ๋ผ์ธ์ ํจ์๋ฅผ ์คํ๋ง ํ๊ฒ ๋ฉ๋๋ค.
- Step into next function call : ์คํ ์ธํฌ๋ ์คํ ์ค๋ฒ์ ๋ค๋ฅด๊ฒ ํ์ฌ ์คํ ๋ผ์ธ์ ์ฝ๋์ ํจ์๊ฐ ์๋ค๋ฉด ํจ์ ์์ ์ฒซ ๋ฒ์งธ ์ฝ๋๋ก ์ง์ ํด ๋ค์ด๊ฐ ๋ค์ ํ๋์ฉ ๋ผ์ธ๋ณ๋ก ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
- Step out of current function : ์คํ ์ธํฌ๋ก ๋ค์ด์จ ํจ์๋ฅผ ๋๊น์ง ์คํํ๊ณ ๋ฐ์ผ๋ก ๋น ์ ธ๋์ ํด๋น ํจ์๋ฅผ ์คํํ ํจ์๋ก ๋์๊ฐ๋๋ค.
- Active/Deactive breakpoint : ๋ธ๋ ์ดํฌํฌ์ธํธ๋ฅผ ๋๊ฑฐ๋ ์ผค ์ ์์ต๋๋ค.
- Pause on exception : ์๋ฐ์คํฌ๋ฆฝํธ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์์น์ ๋ธ๋ ์ดํฌํฌ์ธํธ๋ฅผ ์ก์์ค๋๋ค.
์ด๋ ๊ฒ ๋ง์ ๋ด์ฉ์ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํ๋ ค๊ณ ๋ ธ๋ ฅํด๋ดค์ต๋๋ค! ๋์๋์ จ์ ์ข๊ฒ ๊ณ ์ ๋ ํ๋ก ํธ์๋์ ๋ํด์ ๋ ๊ณต๋ถํด๋ด์ผ๊ฒ ์ต๋๋ค. ๊ธด ๊ธ ๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๋๊ธ