2013-02-12 4 views
3

저는 RequireJS를 처음 사용하므로 어리석은 질문 일 수 있습니다!DataJS 라이브러리가 RequireJS에로드되지 않습니다.

require-jquery를 사용하고 있습니다.

DataJS 라이브러리를 모듈로로드하려고합니다. 독립 실행 형 라이브러리이며 jQuery에 의존하지 않습니다.

:

(function (window, undefined) { 

    var script = document.createElement('script'); 
    script.async = true; 
    script.src = "scripts/require-jquery.js"; 

    var entry = document.getElementsByTagName('script')[0]; 
    entry.parentNode.insertBefore(script, entry); 
    script.onload = script.onreadystatechange = function() { 
     var rdyState = script.readyState; 
     if (!rdyState || /complete|loaded/.test(script.readyState)) { 

      require([ 
         "jquery", 
         "scripts/datajs-1.1.0" 
        ], 
         function (jQueryHandle, odata) { 
          alert(odata); 
         }); 

      script.onload = null; 
      script.onreadystatechange = null; 
     } 
    }; 

})(window); 

이 내 파일 구조입니다 :

<html> 
<head> 

</head> 
<body> 
    <script type="text/javascript" src="Scripts/Loader.js"></script> 
</body> 
</html> 

이 같은 Loader.js 파일이 모습입니다 :

이 내 HTML 파일 START.HTM의 모습입니다

Project 
| 
|----- start.htm 
| 
|----- Scripts 
     | 
     |----- datajs-1.1.0.js 
     | 
     |----- require-jquery.js 
     | 
     |----- loader.js 

저는 datajs 라이브러리가 AMD를 지원한다고 생각합니다. 이것은 라이브러리의 모습입니다 :

(function (window, undefined) { 

    var datajs = window.datajs || {}; 
    var odata = window.OData || {}; 

    // AMD support 
    if (typeof define === 'function' && define.amd) { 
     define('datajs', datajs); 
     define('OData', odata); 
    } else { 
     window.datajs = datajs; 
     window.OData = odata; 
    } 

    /* -------------------- */ 

})(this); 

내가 뭘 잘못하고 있니?

답변

0

나는 그게 전부가 (정의 생각 [... 필요 대신 ([.. requirejs와

+0

점 I에 적합하지 더 나은 이름이 무엇인지에 관해서는 여기에서 만들고 있습니다. 정의하거나 요구하는 경우에는 더듬지 않습니다. – JDC

2

이 코드가 있습니다

define(['datajs','OData'], function (datajs,OData) { 
    console.log(datajs); 
    console.log(OData); 
    console.log(OData.read); 
} 
: 내가 이런 짓을 내 자신의 모듈에서

<script type="text/javascript" src="0.1/Clientscripts/requirejs/2.1.11/require.js"></script> 
<script type="text/javascript"> 
    requirejs.config({ 
     'baseUrl': '0.1/Clientscripts/', 
     'paths': { 
      'datajs':'datajs/1.1.2/datajs.min', 
      'OData':'datajs/1.1.2/datajs.min' 
     }, 
     'shim': { 
      'OData':['datajs'] 
     } 
    }); 
</script> 

여기에서 datajs 및 OData 객체에 액세스 할 수 있습니다.

Personality 나는 다중을 갖는 것이 약간 어색하다고 생각합니다. 같은 파일 이플 'paths'-항목 ...

당신이 말할 수 있다면 그것은 청소기했을

:

'paths': { 'datajs':'path/to/datajs',... 
//and then 
require(['datajs/core','datajs/OData'],... 

을하지만 다시 ... 아무것도 :)

+0

남자가 일하고있는 것처럼 보였습니다, 나는 그것에 고생하고 있었지만 그게 어떻게 작동하는지 알지 못했습니다 : S하지만 작동합니다 –

+0

이것은 대답으로 받아 들여야합니다 .. 그것은 나에게도 도움이되었습니다! – Matt

관련 문제