반응형
RequireJs-정의 대 요구
모듈의 경우 define 대신 require를 사용했던 객체를 반환하지 않습니다. 예를 들어 다음과 같은 jQuery 플러그인 (jquery.my-plugin.js)이 있다고 가정합니다.
require(['jquery'], function($) {
$.fn.myPlugin = function(options) {
...
};
});
이제 다른 모듈에서 다음과 같이 말하면 :
require(['jquery', 'jquery.my-plugin'], function($) {
$('#element').myPlugin();
});
myPlugin이 등록되지 않았기 때문에 작동하지 않는 것으로 나타났습니다. 그러나 내 jquery.my-plugin 모듈 내에서 정의에 대한 요구 사항을 변경하면 제대로 작동합니다.
누군가 내가 왜 이것을해야하는지 명확하게 해주면 감사하겠습니다. 계속해서 사용하기 전에 무언가를 완전히 이해하고 싶습니다. 감사
기본적으로 사용할 때 require
"나는 이것을 원하지만 모든 종속성도 원합니다"라고 말합니다. 따라서 아래 예에서는 A가 필요하지만 require는 모든 종속성을 검색하고 계속하기 전에로드되었는지 확인합니다.
require(['a'], function(a) {
// b, c, d, e will be loaded
});
// File A
define(['b','c','d','e'], function() {
return this;
});
일반적인 경험 규칙은 define
애플리케이션에서 재사용 할 모듈을 정의하고 require
단순히 종속성을로드하는 데 사용 하는 경우에 사용 하는 것입니다.
다음은 다른 곳에서 종속성으로 사용할 수있는 'jquery.my-plugin'이라는 모듈 을 정의 하는 jquery.my-plugin.js 내부에 있어야하는 코드입니다 .
define(['jquery'], function($) { //jquery is a dependency to the jquery.my-plugin module
$.fn.myPlugin = function(options) { //adds a function to the *global* jQuery object, $ (global since jQuery does not follow AMD)
...
};
});
다음은 플러그인 함수를 전역 jQuery 객체에 연결 한 다음 사용하려는 코드 섹션입니다.
require(['jquery.my-plugin'], function() { // jquery.my-plugin is loaded which attaches the plugin to the global JQuery object as shown above, then this function fires
//the only reason $ is visible here is because it's global. If it was a module, you would need to include it as a dependency in the above require statement
$('#element').myPlugin(); //the $ refers to the global object that has the plugin attached
});
참조 URL : https://stackoverflow.com/questions/17366073/requirejs-define-vs-require
반응형
'programing' 카테고리의 다른 글
XML 스키마 네임 스페이스에 대한 Spring NamespaceHandler를 찾을 수 없습니다. [http://www.springframework.org/schema/security] (0) | 2021.01.14 |
---|---|
클릭시 버튼 텍스트 변경 (0) | 2021.01.14 |
버튼의 텍스트와 아이콘의 수직 정렬 (0) | 2021.01.14 |
사용자 정의 개체의 addEventListener (0) | 2021.01.14 |
사용자 정의 개체의 자바 스크립트 유형 (0) | 2021.01.14 |