1. 단축키
크롬 개발자 도구에서 유용한 간단한 단축키 몇 가지~
- 개발자 도구 열기(엘리먼트 패널) : Ctrl + Shift + C (맥일 경우 Command)
- 개발자 도구 내 탭 전환 : Ctrl + [ or ]
- 개발자 도구에서 콘솔 열고 닫기 : esc
도구를 여는 단축키가 3가지 있는데,
맥의 경우엔 기본 앱이 몇 가지를 물고 있어 개인적으론 엘리먼트 패널을 여는 위 단축키가 제일 좋더군요.
2. 콘솔 객체 메서드
스크립트 내에서 console.log() 처럼 사용 가능한,
console 객체의 메서드 중 유용한 것 몇 가지입니다.
콘솔 객체 메서드 관련 테스트는 jsFiddle에서 돌려보시면 더 쉽게 확인하실 수 있을 것 같아요.
(http://jsfiddle.net/ohgyun/j9aec/7/)
2.1. printf 스타일 로깅
로깅 메서드의 첫 번째 파라미터가 String 일 경우, printf 스타일로 로그를 남길 수 있습니다.
%s String
%d, %i Integer
%f Float
%o Object HyperLink, Object를 로그로 남기고 싶을 경우
예)
console.log("%s, %d원", "멜론", 8000); //--> 멜론, 8000원
2.2. 타입별 로깅
타입별로 로깅하면 타입에 따라 로그 옆에 아이콘이 표시되고,
콘솔 패널 하단에서 타입별로 구분해 확인할 수 있습니다.
console.info(object[, object, ...])
console.warn(object[, object, ...])
console.error(object[, object, ...])
2.3. 타이머
console.time(name)
console.timeEnd(name)
name에 해당하는 타이머를 생성하고 종료 시점까지의 시간을 출력합니다.
수행 시간을 테스트할 때 유용하게 사용할 수 있을 것 같아요.
2.4. 그룹별 로깅
console.group(object[, object, ...])
console.groupEnd()
콘솔 메세지를 그룹핑하여 출력합니다.
console.groupCollapsed(object[, object, ...])
console.groupEnd()
group과 동일하지만, 그룹을 닫은 채로 출력합니다.
2.5. 프로파일링
console.profile(title)
console.profileEnd(title)
콘솔 객체를 통해 프로파일링을 수행할 수 있습니다.
종료되면 프로파일 패널에 리포트가 작성됩니다.
메서드 단위의 성능을 테스트할 때 유용하게 쓸 수 있을 것 같네요.
2.6. 그 외 유용한 것들
assertion 도 가능하고,
console.assert(expression[, object, ...])
호출 스택을 출력하는 것도 가능합니다.
console.trace()
또한, 몇 번 호출되었는지도 체크 가능합니다.
console.count(title)
3. 콘솔 라인 메서드
아래는 콘솔 라인 내에서 사용할 수 있는 메서드들에 대한 내용이며,
스크립트 내에서는 사용할 수 없습니다.
3.1. 노드 가져오기
$(id) : id에 해당하는 엘리먼트를 가져옵니다.
$$(selector) : selector에 해당하는 엘리먼트를 배열로 가져옵니다.
$x(xpath) : xpath 구문으로 가져옵니다.
셀렉터 메서드는 진도의 것과 동일한 형태이고, 내부적으로 getElementById와 querySelectorAll을 사용하고 있네요.
위 메서드를 사용하고 있지 않는 페이지에서 $, $$, $x를 콘솔에서 출력해보면, 구현 코드를 조회할 수 있습니다.
3.2. 선택한 노드 가져오기
전 이 변수가 제일 마음에 들던데요^^
엘리먼트 패널에서 선택한 가장 최근의 노드를 $0 변수를 통해 가져올 수 있습니다.
$0 : 가장 최근에 엘리먼트 패널에서 선택된 노드
그 이전 노드를 선택하고자 할 때엔 $n 변수를 이용하세요.
$1, $2, .. : n번 이전에 선택할 엘리먼트
3.3. 커맨드 라인에서 노드 조회하기
inspect(id|object)
명령어로 커맨드 라인에서 노드를 가져와 엘리먼트 패널에서 조회할 수 있습니다.
마찬가지로 선택된 노드가 $0에 캐시됩니다.
예)
inspect(this_is_id) // 주의: 파라미터로 id를 입력할 경우 따옴표(")는 생략
inspect($1)
3.4. key와 value 출력
오브젝트의 key와 value를 출력합니다.
예를 들어, 콘솔 객체의 프로토타입 메서드를 조회해보고자 한다면,
콘솔 라인에서 아래 명령을 출력해보면 됩니다.
keys(console.__proto__);
3.5. 클립보드 복사
copy() 명령어로 object 내용을 클립보드로 복사할 수 있습니다.
예를 들어,
copy($0)
명령어는 가장 최근에 선택된 엘리먼트의 html 구문을 클립보드로 복사합니다.
3.6. monitorEvents
monitorEvents(object[. types])
unmonitorEvents(object[, types])
노드에서 발생하는 이벤트를 모니터링 합니다.
types 값으로 "mouse", "key" 등을 넣을 수 있습니다.
크롬 콘솔이 파이어폭스의 것을 대부분 지원하고,
firebug command line API에 따르면 types에는 아래와 같은 종류가 있는데,
모두 제공하는 것 같진 않습니다.
("composition", "contextmenu", "drag", "focus", "form", "key", "load", "mouse", "mutation", "paint", "scroll", "text", "ui", "xul")
대신, "click", "mousedown" 등 이벤트명을 직접 입력하는 것에는 작동하네요.
그리고,
늘, 테스트용 로깅 코드를 작성했다가 배포할 땐 지우곤 했었는데,
콘솔 코드를 잘 구분해서 코드에 포함시켜 놓으면 추후에 디버깅할 때 꽤 도움이 될 것 같단 생각이 들었습니다.
일전에 JSTools 배포 목록에서 console.xx 는 모두 지워준다고 했던 걸로 기억하는데,
로깅 코드를 잘 구분해두고, 배포툴에서 걸러주면 디버깅하기 편할 것 같네요.
이런 저런 생각을..^^;;
다른 서비스에서 프로덕트 시점의 코드에 로깅 코드를 포함시킨 케이스가 있나요?
이런 케이스나 좋은 의견이 있으면 가이드 부탁드려요~~
그럼 모두 칼퇴하시고, 즐거운 저녁 되세요~!!
#참고.
Chrome Developer Tools : http://code.google.com/intl/ko-KR/chrome/devtools/docs/overview.html
Chrome Developer Tools: Console
http://code.google.com/intl/ko-KR/chrome/devtools/docs/console.html
http://code.google.com/intl/ko-KR/chrome/devtools/docs/shortcuts.html
Firebug Console API
http://getfirebug.com/wiki/index.php/Console_API
Firebug Command Line API
http://getfirebug.com/wiki/index.php/Command_Line_API
YouTube: Become a Javascript Console Power-User
http://www.youtube.com/watch?v=4mf_yNLlgic&feature=feedu
'etc' 카테고리의 다른 글
css (0) | 2012.01.11 |
---|---|
<고독의 위로] 앤서니 스토 (0) | 2011.11.21 |
JS tpl 템플릿 추가하기 (0) | 2011.10.24 |
테스트 패턴 (0) | 2011.10.19 |
테스트의 질 (0) | 2011.10.19 |