2013-01-14 2 views
-1

일부 자바 스크립트 라이브러리는 모든 종속 라이브러리를 포함하여 완전히 연결된 파일로 배포됩니다. JQuery와 같은 일부 라이브러리는 여러 버전의 라이브러리가 사용되는 경우 충돌을 처리 할 수있는 방법을 제공합니다. 그러나 컴파일 된/연결된 자바 스크립트 파일에 충돌을 처리하는 방법이 내장되어 있지 않은 라이브러리가 있고 동일한 라이브러리 (다른 버전)를 사용하고 있다면 사용중인 버전을 래핑하는 일반적인 방법이 있습니까? 그것에 사용자 정의 네임 스페이스를 추가 하시겠습니까? 아니면 사용중인 라이브러리에 의존하고 있습니까?자바 스크립트 라이브러리 간의 충돌을 처리하는 일반적인 방법

+1

라이브러리에 따라 다릅니다. 한 네임 스페이스 아래에 모든 기능을 제공하는 경우 먼저 버전을 포함하고 다른 변수/이름으로 참조를 저장하고 충돌이 발생할 경우 원본을 설정 해제 한 다음 나중에 다른 라이브러리를 포함 할 수 있습니다. –

+0

흥미 롭다. 원래의 설정을 해제하는 방법을 보여주는 (답은) 예를 보여줄 수 있습니까? 나는 그걸하는 법을 잘 모르겠다. ... –

+0

@FelixKling, 나도 안다. 이것을 답변으로 게시하면 동의 할 것입니다. –

답변

2

라이브러리에 따라 다릅니다. 한 네임 스페이스 아래에 모든 기능을 제공하는 경우 먼저 버전을 포함하고 다른 변수/이름으로 참조를 저장하고 충돌이 발생할 경우 원본을 설정 해제 한 다음 나중에 다른 라이브러리를 포함 할 수 있습니다.

그것은 다음과 같이 보일 것이다 : 그들은 전역으로 누출되지 않도록 OtherLibraryWithDependencies 제대로 모든 종속성을 캡슐화 할 경우 물론

<script src="MyLibraryV1.js"></script> 

<script> 
    // Assuming all functions are available under `$` 
    var MyLibraryV1 = $; 
    // Now the next script can overwrite `$`. 
    // Optionally we can also delete/undefine this symbol: 
    delete window.$; 
</script> 

<script src="OtherLibraryWithDependencies.js"></script> 

<script> 
    // For easy access, you can use an immediate function to still let `$` 
    // refer to your library version. It should not affect the other code 
    // (but if it does you obviously have to use the other name) 
    (function($) { 
     // put all code that needs `MyLibraryV1` here 
    }(MyLibraryV1)); 
</script> 

더 나은 것입니다.

+0

정말 고마워. –

관련 문제