2013-05-10 3 views
0

here 폴더 구조를 갖기 위해 노력하고 있습니다.require.js를 사용하여 자바 스크립트 라이브러리를로드하십시오.

차이점은이 라이브러리의 최신 개발 버전을 사용하고 있다는 것입니다. 그러나 jquery조차 제대로 업로드되지 않습니다. 나는 AMD 호환이 무엇을 의미하는지 이해할 수 없었다.

나는 단순히 해당 라이브러리를 다운로드했습니다. AMD와 호환되지 않는다는 것을 의미합니까? 이 라이브러리들의 AMD 호환 버전이 있습니까? 우리는 shim config를 사용하여 AMD와 호환되지 않는 것을로드해야합니까?

require.js 공식 문서에 따르면 shim을 사용하는 것이 좋습니다. 권장하지 않습니다.

답변

1

shim에 대한 언급을 문서에서 "권장하지 않음"으로 찾을 수 없습니다. 나는 그것에 대해 너무 걱정하지 않을 것이다. RequireJS를 사용하여 비 AMD 호환 라이브러리를 브리징하는 방법이 잘 검증되고 점점 더 많이 사용되고 있습니다 (이전에는 정의 호출에 랩 된 전용 AMD 버전을 구축하는 것이 유일한 방법이었으며 라이브러리 유지 보수 자에게 추가적인 노력이 필요했습니다) . "최신 개발 버전"으로 당신은 jQuery의 사전 출시을 구축 의미하는 경우 지원 AMD (다운로드 페이지의 pre-release section를 보라를하는 것처럼

은, 보이는, 매우 보텀 source code file 아래로 스크롤 : 당신은 AMD에 관련된 코드)가 AMD에 얽매이기 때문에

Backboneunderscore 필요가있는 경우에 shimmed되는 참조, 그래서 그것은 (당신이 할 수 있도록이 두 가지 특정 라이브러리가도, shim config option documentation example에 사용됩니다에서 탈출이 없습니다거야 그냥 다시 사용하십시오).

2

@ kryger가 jQuery가 AMD와 호환되고 비 AMD 모듈에 아무런 문제가 없음을 알립니다.

AMD 호환은 모듈이 AMD specification을 준수한다는 것을 의미합니다. 따라서 기능을 수출합니다. 위의 함수 본문에 따라서

define(['jquery', 'underscore'], function ($, _) { 
    // function body 
}); 

: : 예를 들어

  • 당신이 $ 인수를 통해 jQuery를 액세스 할 수 있습니다; 그러나
  • 밑줄은 AMD에서 자체로 내 보내지 않으므로 _ 인수는 undefined이됩니다.

일부 AMD 호환 모듈 (예를 들어, jQuery를) 또한 그들이 전역 네임 스페이스 (예를 들어, window.$)로 내보낼 것 HTML <script> 태그에서와 같이, '독립'을 작동합니다.

나는 당신이 AMD 로더를 통해 그것을로드 할 때 jQuery를 여전히 글로벌 $ 수출 생각, 그래서 당신은 단지 오히려 정의보다 (글로벌 $에 액세스 항상 처음 필요할 때 당신의 진입 점 /에 한 번 jQuery를로드 할 수 $ 인수).

또한 jQuery 플러그인 (전역 매개 변수를 수정)을 사용하면 조금 혼란 스러울 수 있습니다!

관련 문제