2010-01-11 4 views
3

나는 나중에 풀어보고 싶은 자바 스크립트로 새로운 프로젝트를 진행 중이다. 다른 기능 외에도이 스크립트에는 약간의 DOM 조작이 필요합니다. 이 XB (Cross-Browser)를 만들고 휠을 다시 고안하지 않으려면 기존 JavaScript 라이브러리의 도움이 필요합니다. 훌륭한 라이브러리가 많기 때문에이 프로젝트를 위해 하나의 라이브러리를 강제하고 싶지는 않습니다. 그렇기 때문에 이 하나의 스크립트에서 여러 라이브러리를 지원하려고합니다..하나의 스크립트에서 여러 개의 JavaScript 라이브러리 지원하기

내 jQuery를 알고 있지만 다른 라이브러리에는 충분한 경험이 없습니다. 그래서 스크립트의 여러 자바 스크립트 라이브러리를 지원하는 자습서 나 기사가 있는지 궁금합니다.?

나는 CSS 셀렉터 엔진 (Sizzle, Selector.js, Peppy, NWMatcher, cssQuery)에서 동일한 기능을 사용할 수 있지만 JS에 대해서는 알지 못한다고 읽었습니다.

+0

나는 사람들이 이것에 대해 무엇을 말해야하는지 궁금합니다. Framework agnostic huh .. +1 – Perpetualcoder

+3

당신은 ExtJs가 그것을 어떻게하는지 볼 수 있습니다. src \ adapter를 살펴보면 yui, prototype, jquery 또는 기본 lib에 대한 기본 lib 주위에 자신 만의 추상화가 있습니다. –

+0

감사합니다. Roland B. 귀하의 의견은 가장 유용합니다. 나쁜 점은 그것에 대한 기사가없고 변환 자체가 라이브러리에서 사용된다는 것입니다. – jerone

답변

0

this page의 두 번째 의견은 흥미로운 대답을 제공합니다.

+0

어댑터를 사용하여 여러 자바 스크립트 라이브러리를 지원하는 스크립트를 발견했습니다. http://www.shadowbox-js.com/ – jerone

3

글쎄, jQuery를 사용하면 $ .noConflict() 함수를 사용하여 전역 네임 스페이스에서 '$'및 'jQuery'변수를 제거 할 수 있으므로 페이지의 다른 부분이 다른 버전의 jQuery를 사용하거나 '$'변수를 선언하는 다른 라이브러리.

는 여기에 내가 JSR-168 포틀릿과이 방법을 사용하고 큰 성공을 했어

<script src="/path/to/jquery.min.js" type="text/javascript"></script> 
<!-- load plugins you require here --> 
<script type="text/javascript"> 

var myUniquelyNamedVar = {}; 
myUniquelyNamedVar.jQuery = $.noConflict(true); // de-aliases jQuery, but gives you a private reference (if you need it) 

(function($) { 
    // use an anonymous function and pass in your private jQuery instance; inside this function you can use $ like normal... 
})(myUniquelyNamedVar.jQuery); 
</script> 

... 간단한 예입니다. 한 페이지에 여러 개의 포틀릿을 가질 수 있습니다. 각각의 포틀릿은 서로 다른 버전의 jQuery 또는 다른 플러그인을 사용할 수 있습니다.

+0

'noConflict'는 새로운 스크립트의 구현과 관련이 없습니다. jQuery는 사용되지도 않았다. – jerone

1

어쨌든 유용하게 추상화 할만큼 충분히 유사한 공통 프레임 워크에 대해서는별로 생각하지 않습니다. 가능한 한 일반 DOM에 충실하십시오.

유일하고 유용하며 재사용 가능한 작업에 대해서는 비슷한 방식으로 제공되는 많은 프레임 워크가 선택기 엔진이라고 생각할 수 있습니다. 그래서 뭔가 같은 : - 자바 스크립트 프레임 워크 프레임 워크 Swiss :

function querySelectorAll(selector) { 
    if ('querySelectorAll' in document) 
     return document.querySelectorAll(selector); // native Selectors-API is best 
    if ('jQuery' in window) 
     return jQuery(selector); // returns a wrapper object, but it's enough like an array 
    if ('$$' in window) 
     return $$(selector); // prototype 
    if ('YAHOO' in window && 'util' in YAHOO && 'Selector' in YAHOO.util) 
     return YAHOO.util.Selector.query(selector); // yui 
    // others? 
    throw 'No selector engine found'; 
} 
+0

그래, CSS 선택기 엔진 용입니다. 서로 다른 방식으로 결합되어 있기 때문에 라이브러리 자체에는이 같은 접근법이 가능하지 않은 것처럼 보입니다. – jerone

관련 문제