2012-02-18 3 views
0

이 시점에서 요구 사항에 약간의 좌절감이 생깁니다.require.js로 모듈 로딩 (AMD)을 시도하는 중 오류가 발생했습니다.

내 App.coffee 파일에서 jquery 및 다른 라이브러리를로드하려고합니다. 문제는 내 정의에서 모듈 종속성을로드 할 수 없다는 것입니다. 입력 인수 (jq, jsn 등) 중 일부는 null이거나 HTMLDocument 객체입니다. 이것은 '주문', 'domReady'또는 아무 것도 시도하지 않은 플러그인의 순열을 기반으로 변경됩니다.

내 js lib 디렉토리는 A와 유사합니다. 그리고 App.coffee 파일은 B)처럼 보입니다. 나는 require.config에서 '경로'를 사용하려고 시도했고, 원시 파일 참조 (아래에서 보는 것)를 시도했다. 나는 requirejs-jquery 통합을 알고있다. 하지만 order my plugin loading 수 없습니까?

'경로'라는 이름을 지정하면 다른 오류 집합이 발생합니다. 나는 누군가 suggested jquery 1.7 (also here)을 본다. 이게 효과가 있니? 나는 처음으로 한 발 뒤로 물러나서 개념이 올바르게 작동하는지 확인하기를 원했습니다. i) require.config ii) 모듈 정의 (종속성 포함), iii) 주문 플러그인 등

이러한 개념이 올바르게 다운 된 경우 jquery 버전 문제라고 생각합니다. 그러나 종속성으로 jquery 만있는 것은 아닙니다. 그리고 이런 방식으로 시간을 낭비하는 것은 대단히 불쾌합니다. 어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.

A)

 

    $ tree js/lib/ 
    js/lib/ 
    ├── backbone.js 
    ├── backbone_loader.js 
    ├── domReady.js 
    ├── jquery-1.6.3.js 
    ├── json2.js 
    ├── order.js 
    ├── pure.js 
    ├── require.js 
    └── underscore.js 

B)는

 

    require.config({ 
     baseUrl: "/js", 
     paths: 
     order : '/js/lib/order' 
     jQuery : '/js/lib/jquery-1.6.3' 
     json2 : '/js/lib/json2' 
     Underscore : '/js/lib/underscore' 
     Backbone : '/js/lib/backbone_loader' 
     pure : '/js/lib/pure' 
    }) 


    define([ 'js/lib/order!js/lib/jquery-1.6.3', 
       'js/lib/order!js/lib/json2', 
       'js/lib/order!js/lib/underscore', 
       'js/lib/order!js/lib/backbone', 
       'js/lib/order!js/lib/pure', 
       'js/lib/order!js/bkeeping/models', ] 
     (jq, jsn, und, bbn, pur, models) -> 

     console.log('bkeeping LOADED') 

     # return an object with the models in it 
     models : models 
     jQuery : jq.noConflict() 
     json2 : jsn 
     Underscore : und.noConflict() 
     Backbone : bbn.noConflict() 
     pure : pure 
    ) 

답변

0

감사합니다.

하지만 jquery-1.7로 갔지만 개체를 ​​가져 오기 위해 여전히 전역 공간에서 가져와야했습니다. 그것은 현재 나의 다른 libs와 그들의 의존성에 적용됩니다. 내가 한 일은 종속성을 가진 객체를 반환하는 것이 었습니다. order plugin으로 라이브러리로드가 완료되었습니다.

콜백 함수 (jq, pur, jsn 등)에 전달되는 종속성 객체의 계약은이 라이브러리에서 작동하지 않습니다. 내 정의 된 모듈 (예 : 모델)에서는 작동하지만 외부 라이브러리에서는 작동하지 않습니다. use plugin을 시도했지만 밑줄과 백본에서 작동하지 않거나 제대로 설정하지 않은 것으로 나타났습니다. 이것은 현재 실행할 수있는 해결책입니다. 나는 두통이 require.js에 대한 이점을 심각하게 흐리게한다고 말해야만한다.

 

    define([ 'order!js/lib/jquery-1.7', 
       'order!js/lib/pure', 
       'order!js/lib/json2', 
       'order!js/lib/underscore', 
       'order!js/lib/backbone', 
       'order!bkeeping/models', ] 
     (jq, pur, jsn, und, bbn, models) -> 

     console.log('bkeeping LOADED') 

     # return an object with the dependencies in it 
     models : models 
     jQuery : jQuery.noConflict() 
     pure : pur      # pure and json2 objects are simply used in other libs. I don't need them directly 
     json2 : jsn 
     Underscore : _.noConflict() 
     Backbone : Backbone.noConflict() 
    ) 

+0

답변을 확인하십시오. 거기에 플러그인을 설정하면 문제가 해결됩니다. 주문할 필요가 없습니다! – ggozad

+0

오오 그렇습니다. 나는 당신의 대답에 그 링크들을 보았습니다. 하지만 어쩌면 방금 제대로 설정하지 않았을 수도 있습니다. requirejs 들어, 이제 내 내부 모듈 ([여기를 참조하십시오 (http://stackoverflow.com/questions/9383652/howto-use-jquery-serialscroll-scrollto-not-working)))에만 사용하십시오. 나는 외부 자원에 대해 너무 성가신 것으로 알고있다. – Nutritioustim

0

JQuery와는 AMD 로더를 지원하는 최신 require.js와 잘 동작합니다. 밑줄 및 백본하지 않고 중 하나에 당신이 필요합니다 : 필요의

  1. 저자에서 인스턴스 one를 들어, 수정 된 버전을 사용합니다.
  2. 플러그인을 사용하십시오. 나는 그 사용을 발견했다! 내 요구 사항을 완벽하게 충족시키기 위해 here에서 플러그인.
관련 문제