programing

RequireJs-정의 대 요구

javaba 2021. 1. 14. 23:04
반응형

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

반응형