2009-08-07 2 views
1

왜 prototype.js를 scriptaculous.js와 함께 사용하고 싶습니까? 가장 큰 이유는 무엇입니까? 언제 도서관을 둘 다 필요로합니까?scriptaculous.js와 함께 prototype.js를 사용하는 이유는 무엇입니까? 주된 이유는 무엇입니까?

+0

수 너 좀 더 구체적 일까? 기본 응답은 찾고있는 구현과 프로토 타입 또는 scriptaculous (또는 jQuery와 같은 다른 것)가 자체적으로 기능을 처리 할 수 ​​있는지에 따라 "의존적"일 것입니다. – kdmurray

답변

7

나는 꽤 오랫동안 프로토 타입을 사용 해왔다. 이제 일부 프로젝트에서는 jQuery, 다른 프로젝트에서는 Mootools를 사용하고 나머지는 Mootools를 사용합니다 ...

왜 JS Framework를 사용합니까?
음, 세 가지 주요 이유 : 그들은 물건을 많이 제공

  • 나 자신에 의해 다시 개발하지 않으려는
  • 그들은 잘 테스트; 내 자신의 코드보다 더
  • 그들은 크로스 브라우저 호환성 레이어를 제공하는 것 (그리고 내가 대신 혼자이 전쟁을 할 필요없이, 그와 거래하는 프레임 워크를 가지고 좋아!)

로를 어떤 JS 사용해야하는 프레임 워크, 그것은 또 다른 질문입니다 - 당신이 prototype.js에 및/또는 scriptaculous.js 포함하면


를 ^^에 전적으로이다 :

  • prototype.js에 : 모든 페이지에 그 일부 JS 물건이 필요합니다 (대부분의 페이지 유전자 집회)
  • scriptaculous.js 적어도 다른 JS 프레임 워크에 놓은 뒤 드롭, Autocompleter에 등 같은 효과를 필요로 페이지 ...

같은 일이 너무, BTW ...

1

scriptaculous.js 파일은 document.write 호출을 사용하여 나머지 스크립트를 포함하는 도우미 파일입니다.

scriptaculous.js 파일에 작성된 코드에서 알 수 있듯이 require 함수를 호출하여 빌더, 효과 등 라이브러리를 포함합니다.

var Scriptaculous = { 
    Version: '1.8.2', 
    require: function(libraryName) { 
    // inserting via DOM fails in Safari 2.0, so brute force approach 
    document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>'); 
    }, 
    REQUIRED_PROTOTYPE: '1.6.0.3', 
    load: function() { 
    function convertVersionString(versionString) { 
     var v = versionString.replace(/_.*|\./g, ''); 
     v = parseInt(v + '0'.times(4-v.length)); 
     return versionString.indexOf('_') > -1 ? v-1 : v; 
    } 

    if((typeof Prototype=='undefined') || 
     (typeof Element == 'undefined') || 
     (typeof Element.Methods=='undefined') || 
     (convertVersionString(Prototype.Version) < 
     convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE))) 
     throw("script.aculo.us requires the Prototype JavaScript framework >= " + 
     Scriptaculous.REQUIRED_PROTOTYPE); 

    var js = /scriptaculous\.js(\?.*)?$/ig; 
    $$('head script[src]').findAll(function(s) { 
     return s.src.match(js); 
    }).each(function(s) { 
     var path = s.src.replace(js, ''), 
     includes = s.src.match(/\?.*load=([a-z,]*)/); 
     (includes ? includes[1] : 'builder,effects,drag-drop,controls,slider,sound').split(',').each(
     function(include) { Scriptaculous.require(path+include+'.js') }); 
    }); 
    } 
}; 

Scriptaculous.load(); 

그리고 scriptaculous는 프로토 타입 라이브러리를 기반으로하는 애드온의 종류이기 때문에 프로토 타입 라이브러리를 포함합니다. 프로토 타입 라이브러리에서 사용 가능한 메소드를 호출 할 때 프로토 타입 없이는 scriptaculous를 사용할 수 없습니다.

1

ScriptaculousPrototype을 사용하므로 페이지에 Scriptaculous 효과를 사용하는 경우이를 포함시켜야합니다.

Scriptaculous의 명백한 용도를 볼 수 없다면 간결하고 효과적인 코드를 작성하기위한 일종의 크로스 플랫폼 유틸리티 레이어를 제공하는 Prototype을 사용하는 다른 자바 스크립트가있을 수 있습니다. 그것을 확인하는 빠른 방법은 $()에 대한 호출을 포함하여 javascript를 찾는 것입니다.

6

Scriptaculous는 Prototype을 내부적으로 사용합니다. Scriptaculous를 사용한다면 Prototype이 필요합니다.

관련 문제