Prototype.js 는 가장 많이 쓰이는 자바스크립트 라이브러리 중 하나로, Sam Stephenson에 의해 만들어져서 현재는 오픈소스로 계속 개발/관리되고 있다.

 

Prototype.js는 하나의 파일로 만들어진 JS 라이브러리이지만, 자바스크립트 및 Ajax, JSON을 위한 프레임워크라 할 수 있을 정도로 강력하다. 또한, Ruby on Rails, script.aculo.us, Rico 등과 같은 다른 강력한 라이브러리의 기반 혹은 일부가 되어 있다.

 

Prototype.js 홈페이지(http://prototypejs.org/)에서 파일 다운 및 관련 정보를 확인할 수 있고, Github(https://github.com/sstephenson/prototype)에서 소스코드가 관리되고 있다.

 

prototype js logo

 

설치 및 사용법 : 프로젝트에 prototype.js를 복사한 후 외부 스크립트 추가

<script type="text/javascript" src="/경로/prototype.js"></script>

  

Prototype.js의 강력한 특징은 아래와 같다.

  1. 클래스와 상속 정의 : 클래스와 서브클래스 정의 및 부모 호출 등
  2. DOM 확장 : DOM 엘리먼트를 위해 추가된 메소드 제공
  3. Ajax 활용 용이 : Ajax 호출의 단순화
  4. JSON 활용 용이 : JSON 인코딩과 디코딩 지원
  5. 이벤트 Delegation(임명) : 이벤트-드리븐 프로그래밍을 위한 향상된 기술 제공
  6. 엘리먼트의 너비와 간격 측정 : 엘리먼트의 픽셀값 측정

 

 

간략하게 몇가지를 소개해 본다면,,

 

스크립트에서 $(), $F(), $$()와 같은 표현법을 본적이 있을 것이다. 이들은 특정 요소를 선택하는 기능을 수행하는데, 자주 사용되는 문법을 간단하게 줄여서 편리하게 사용할 수 있게 해놓은 것이다.

 

  • $() : getElementById() 함수의 단축형을로 해동 엘리먼트를 참조
document.getElementById("id_of_element").style.color = "#000000";
// 동일
$("id_of_element").setStyle({color: '#000000'});
  • $F() : 해당 엘리먼트의 값을 참조 (보통 value에 해당)
$F("id_of_input_element")
  • $$() : CSS 셀렉터
$$("a.pulsate").each(Effect.Pulsate);

 

 

클래스를 정의하고, 부모 클래스 상속받는 기능은 아래 코드를 참고하면 이해하기 쉬울 것이다.

 

  • 클래스 정의와 상속
// properties are directly passed to `create` method
var Person = Class.create({
  initialize: function(name) {
    this.name = name;
  },
  say: function(message) {
    return this.name + ': ' + message;
  }
});
    
// when subclassing, specify the class you want to inherit from
var Pirate = Class.create(Person, {
  // redefine the speak method
  say: function($super, message) {
    return $super(message) + ', yarr!';
  }
});
    
var john = new Pirate('Long John');
john.say('ahoy matey');
// -> "Long John: ahoy matey, yarr!"

 

 

Ajax를 활용하여 요청(request)과 응답(response)하는 표현도 매우 간결하게 정의되어있다.

 

  • Ajax request & response callback
new Ajax.Request('/some_url', {
  method:'get',
  onSuccess: function(transport) {
    var response = transport.responseText || "no response text";
    alert("Success! \n\n" + response);
  },
  onFailure: function() { alert('Something went wrong...'); }
});

 

 

살펴본 바와 같이 Prototype.js 는 웹 프로젝트에 필수적인 라이브러리인 만큼, 깊이있는 이해가 필요하겠다. 특히, 1.6.0 버전을 기점으로 표현법이 상당히 많이 바뀌었기 때문에, 버전에 따란 다른 사용법을 어느정도 숙지할 필요가 있겠다.

댓글

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

*

로그인하세요.

계정 내용을 잊으셨나요 ?