저자: 클라우스 아우구스티(Claus Augusti), 역 전순재
최근들어 자바스크립트는 사람들의 관심을 끌어내지는 못했다. 사실 대부분의 사람들은 자바스크립트가 ECMA에서 ECMA-262로 표준화된 이래로 이제 실제로는 ECMAScript라고 불린다는 사실을 알지도 못한다.
그렇기는 하지만... 자바스크립트가 없었다면 오늘날의 웹은 어떻게 되었을까? 자신의 존재를 증명하기 위해서만 사용되는 롤오버 버튼에 성질날 이유도 없고, 수십 개의 창이 동시에 떠서 브라우저가 충돌을 일으킬 필요도 없을 것이다. 실제로 이러한 것들은 성가신 특징들이며 이러한 것들의 대부분은 우리의 친구 자바스크립트로 만들어진 것이다. 그렇지만 이 언어 역시 용도와 장점이 다양하다는 것을 기억해두기 바란다. 그리고 필자가 이 기사를 굳이 쓰는 이유도 이러한 다양한 용도와 장점에 여러분의 관심을 조금이라도 끌어내기 위함이다.
아마도 지금쯤 여러분은 이렇게 생각하고 있을 것이다. "지금까지 모든 것이 논의되고 설명된 것이 아니었는가?"
그 대답은 분명하게 아니오이다. 한 편으로 볼 때 많은 것들이 논의 된 것은 사실이다. 그렇지만 웹은 그러한 초기의 논의 이후로 엄청나게 변하였다. 결론적으로 필자는 지금이야말로 자바스크립트의 위력와 그에 수반된 언어와 도구들을 재평가할 시점이라고 생각한다.
DHTML을 이겨낸 자바스크립트
자바스크립트를 둘러싼 최근의 엄청난 관심은 다이나믹 HTML이었다. 실제로 다이나믹 HTML이라는 단어는 4.x 플랫폼과 JavaScript 1.2에서 그런데로 작동하는 약간은 새로운 특징들을 기술하는 전문가풍의 단어라고 할 수 있다. 이와 같이 자바스크립트를 둘러싼 사람들의 관심은 실행 시간에 문서들에 접근하고 수정할 수 있도록 해주는 능력때문 이었다. 그러나 오늘날 웹을 살펴 볼 때 우리는 동적인 문서들을 그렇게 많이 볼 수는 없다. 대부분의 경우 오직 동적으로 만들어진 계층형 메뉴들만이 엄청난 대선전에서 살아 남은 것을 볼 수 있다. 왜 그런지 말하기란 어렵지 않다. 모든 플랫폼에서 실행되는 끝내주는 해결책을 만들어 내려면 대부분의 경우 너무 많은 시간(과 돈)이 필요하기 때문이다.
가장 큰 문제는 주요 플랫폼에서 지원되는 다양한 문서 객체 모델(document object models)의 차이점들이다. 모든 플랫폼에서 공통적인 문서 객체 모델이 우리 모두가 열망해 마지 않는 웹의 다음 단계이다. 이렇게 되면 모든 플랫폼을 지원하기 위하여 맞춤 해결책을 제공할 필요가 없기 때문이다. 이렇게 되면 웹은 다시 개념적인 근본으로 돌아갈 수 있을 것이다. 모질라(
Mozilla)의 노력과 넷스케이프(Netscape)사의
Netscape 6의 배포는 경쟁자인 Internet Explorer 5.x와의 벌어진 격차을 메꾸었다. 이제 적어도 주요 브라우징 플랫폼들은
W3C의 문서 객체 모델(DOM, Document Object Model)을 다룰 수 있으며, 자바스크립트와 결합하여 새로운 방식으로 문서를 표현하고 다루는 방법을 열어 주고 기존의 DHTML 해결책들을 스스로 물러나게 했다.
그러나 현재의 상황은 앞에서 언급했던 것만큼 밝지 못하다. 새로운 테크놀러지들이 새로운 함정을 잉태하고 양대 플랫폼에서 DOM에 대한 지원이 다른데다가 상당한 버그와 불일치가 있기 때문이다.
그러나 자바스크립트를 둘러싼 기술이 진화하고 있을 뿐만 아니라 자바스크립트 자체가 버전 2를 향하여 질주하고 있는 중이다. 실제 버전 1.5에는 자바스크립트를 더욱 진정한 프로그래밍 언어로 만들어 주는 여러 가지 새로운 특징들이 따라 온다. 게다가 논의할 만한 수 많은 것들까지도 담고 있다. 자바스크립트는 더 이상 브라우저에서만 사용되는 데 국한되지 않고 스크립팅 언어로서 매크로미디어(Macromedia)사의 드림위버(Dreamweaver)와 파이어웍스(Fireworks처)럼 많은 어플리케이션에도 사용된다.
진행중인 컬럼의 초점
이 칼럼은 새롭게 사용할 수 있는 클라이언트쪽 테크놀로지를 집중적으로 살펴볼 것이다. 그리고 그 기술들을 이용하는 방법에 대해 논의할 것이다. 큰 그림으로서의 해결책들과 애플리케이션을 논의할 것이며 필요하다면 더 자세히 파고 들어갈 것이다. 예를 들면 버그를 지적하는 것처럼 말이다.
여기에서 다룬 모든 해결책들은 오라일리 자바스크립트 라이브러리에 일부로 포함될 것이다. 그리고 이 라이브러리는 본 기사가 진행됨에 따라 함께 성장해 나갈 것이다. 이 라이브러리는
GPL 라이센스 하에서 출판될 것이기 때문에 얼마든지 자유롭게 여러분의 프로젝트에 사용할 수 있다. 그리고 라이브러리의 모든 항목들은 스크립트 사용법에 대한 설명도 포함할 것이다.
오늘의 메뉴 - HTML 폼 확장하기
그렇다면 어디에서부터 시작해볼까? 오늘날 웹 클라이언트 프로그래밍에서 가장 성가신 작업중의 하나는 어떨까? 폼의 유효성평가 말이다.
좀 지겹다고 생각할지도 모르겠다. 그럴 수도 있겠지만 이번에는 아니다. 어쨌든 간에 옛날 방식대로의 폼의 유효성평가가 널리 알려진 주제이기 때문에 우리는 이것을 출발점으로 선택했다.
한 요소와 그 값에 접근하는 방법이나 1000번째를 대비하여 이벤트를 이벤트 핸들링 함수에 연결하는 방법 같은 것들은 설명하지 않을 것이다. 대신 일련의 새로운 속성들 뒤에 모든 스크립팅 작업들을 완벽하게 감쳐주는 새로운 솔루션을 생성해낼 것이며 이것을 폼 확장 프래임워크(ForX, Forms Extension Framework)라고 부를 것이다.
이러한 속성들은 어떻게할 것인가를 정의하기 보다는 그 요소들을
기술한다. 대부분의 사람들은 이것이 더 배우기 쉽고 기억하기 쉽다고 한다. 특히 프로그래머가 아닌 사람들에게는 이것이 더 자연스럽게 요소들을 처리하는 방법이기 때문이다.
애플리케이션 그 자체는 아무런 자바스크립트 마법도 포함하고 있지 않지만 DOM의 장점을 사용하는 좋은 예가 될 수 있다. 우리가 제시한 솔루션은 Netscape 6/Mozilla, IE 5.x 모두에서 실행될 것이다.
일단 ForX를 본격적으로 살펴보기 전에 먼저 폼과 관련된 기사인
Working With Forms: An Introduction에 대해 살펴보는 것이 좋을 것이다.
클라우스 아우구스티(Claus Augusti)는 O"Reilly Network사의 자바스크립트 편집자이다.