0Pricing
jQuery Academy · 강의

공개 메서드 및 콜백 통합

외부에서 상호작용할 수 있도록 플러그인에 공개 메서드를 추가하고, 사용자가 특정 플러그인 이벤트에 연결할 수 있도록 콜백 함수를 통합합니다.

공개 메서드 및 콜백 통합은(는) CoddyKit의 무료 jQuery Academy 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 jQuery Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. jQuery Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

플러그인과 상호작용하기

훌륭한 플러그인은 단독으로만 작동하지 않습니다. 초기화한 후에도 사용자가 플러그인과 상호작용할 수 있어야 합니다! 이 레슨에서는 외부에서 제어할 수 있는 공개 메서드와 사용자 지정 반응을 위한 콜백 함수를 추가하는 방법을 배웁니다.

  • 공개 메서드: 초기화된 플러그인 인스턴스에서 사용자가 호출할 수 있는 함수입니다.
  • 콜백: 플러그인 내부에서 특정 이벤트가 발생할 때 실행되는 함수입니다.

플러그인 기본 개념 다시 살펴보기

jQuery 플러그인은 전역 범위 오염을 방지하기 위해 즉시 실행 함수 표현식(IIFE)으로 감싸는 경우가 많다는 점을 기억하세요. 이 구조는 플러그인의 로직과 내부 변수를 안전하게 둘 수 있는 공간을 제공합니다.

이 익숙한 패턴을 기반으로 만들어 보겠습니다.

(function($) {
  $.fn.myPlugin = function(options) {
    // Default settings
    var settings = $.extend({}, $.fn.myPlugin.defaults, options);

    return this.each(function() {
      var $this = $(this); // The element the plugin is applied to
      // Plugin logic goes here
      console.log("Plugin initialized on: " + $this.attr('id'));
    });
  };

  // Default options
  $.fn.myPlugin.defaults = {
    message: "Hello from plugin!"
  };
})(jQuery);

// How to use (in HTML <div id="myElement"></div>):
// $('#myElement').myPlugin();

공개 메서드란 무엇인가요?

공개 메서드는 플러그인 내부 범위 외부에 노출되어, 요소에서 플러그인이 초기화된 후에도 외부에서 호출할 수 있는 함수입니다.

플러그인을 위한 리모컨이라고 생각해 보세요. 플러그인에 "reset", "update" 또는 "get a value"와 같은 작업을 수행하도록 지시할 수 있습니다.

공개 메서드 구현하기

공개 메서드를 추가할 때는 일반적으로 jQuery의 .data() 메서드를 사용하여 플러그인 인스턴스 데이터(메서드 포함)를 DOM 요소에 직접 저장합니다.

간단한 "counter" 플러그인을 만들고 getValue 메서드를 추가해 보겠습니다.

(function($) {
  $.fn.counterPlugin = function(options) {
    var settings = $.extend({
      initialValue: 0
    }, options);

    return this.each(function() {
      var $this = $(this);
      var value = settings.initialValue;

      var methods = {
        getValue: function() {
          return value;
        },
        increment: function() {
          value++;
          $this.text(value); // Update display
        },
        init: function() {
          $this.text(value); // Initial display
        }
      };

      // Store methods on the element's data
      $this.data('counterPlugin', methods);
      methods.init(); // Initialize display
    });
  };
})(jQuery);

// HTML: <div id="myCounter"></div>
// Usage: $('#myCounter').counterPlugin();
// Later: $('#myCounter').data('counterPlugin').getValue();

공개 메서드 호출하기

플러그인을 초기화하고 .data()를 통해 메서드를 저장하면, 해당 메서드에 직접 접근하여 호출할 수 있습니다.

먼저 요소에서 저장된 인스턴스를 가져온 다음, 해당 인스턴스에서 메서드를 호출하는 것이 핵심입니다.

// Assume counterPlugin from previous scene is loaded

// HTML: <div id="myCounter"></div>

$(document).ready(function() {
  // Initialize the plugin
  $('#myCounter').counterPlugin({ initialValue: 5 });

  // Get the plugin instance
  var counterInstance = $('#myCounter').data('counterPlugin');

  // Call public methods
  console.log("Current value: " + counterInstance.getValue());
  counterInstance.increment();
  console.log("After increment: " + counterInstance.getValue());
});

콜백이란 무엇인가요?

콜백 함수는 플러그인에 전달하는 함수이며, 플러그인이 수명 주기의 특정 시점이나 특정 내부 이벤트가 발생할 때 실행합니다.

콜백을 사용하면 플러그인의 소스 코드를 수정하지 않고도 플러그인의 동작에 "연결"하여 사용자 지정 로직을 추가할 수 있습니다.

  • 플러그인 내부 동작을 위한 이벤트 수신기처럼 생각해 보세요.
  • 일반적인 콜백: onInit, onChange, onComplete.

콜백 구현하기

콜백을 구현하려면 먼저 플러그인의 기본 옵션에 콜백을 정의합니다. 그런 다음 플러그인 내부에서 관련 이벤트가 발생할 때 유용한 데이터를 전달하며 이 함수를 호출합니다.

counter 플러그인을 확장하여 onChange 콜백을 추가해 보겠습니다.

(function($) {
  $.fn.counterPlugin = function(options) {
    var settings = $.extend({
      initialValue: 0,
      onChange: function(newValue) {} // Default empty callback
    }, options);

    return this.each(function() {
      var $this = $(this);
      var value = settings.initialValue;

      var methods = {
        getValue: function() {
          return value;
        },
        increment: function() {
          value++;
          $this.text(value);
          // Call the callback when value changes
          settings.onChange.call($this[0], value); 
        },
        init: function() {
          $this.text(value);
        }
      };

      $this.data('counterPlugin', methods);
      methods.init();
    });
  };
})(jQuery);

// Usage: See next scene!

콜백 함수 전달하기

사용자는 초기화할 때 플러그인의 옵션 객체 안에 사용자 지정 콜백 함수를 직접 전달합니다. 그러면 플러그인이 적절한 시점에 이 함수를 호출합니다.

.call($this[0], value)가 사용된 부분을 확인해 보세요. 이 코드는 콜백 내부의 this를 DOM 요소로 설정하고 새 값을 인수로 전달합니다.

// Assume counterPlugin with onChange callback is loaded

// HTML: <div id="myCounter"></div>

$(document).ready(function() {
  $('#myCounter').counterPlugin({
    initialValue: 10,
    onChange: function(newValue) {
      console.log("Counter changed to: " + newValue + " on element: " + this.id);
      if (newValue % 2 === 0) {
        $(this).css('color', 'blue');
      } else {
        $(this).css('color', 'red');
      }
    }
  });

  var counterInstance = $('#myCounter').data('counterPlugin');
  counterInstance.increment(); // Triggers callback
  counterInstance.increment(); // Triggers callback
});

여러 메서드와 콜백

플러그인 내부에서 다양한 이벤트를 처리하도록 여러 공개 메서드와 서로 다른 콜백을 정의할 수 있습니다. 이를 통해 유연하고 강력한 구성 요소를 만들 수 있습니다.

  • 공개 메서드를 사용하면 사용자가 플러그인을 제어할 수 있습니다.
  • 콜백을 사용하면 플러그인이 사용자 코드에 현재 발생하는 일을 알릴 수 있습니다.
(function($) {
  $.fn.advancedCounter = function(options) {
    var settings = $.extend({
      initial: 0,
      onIncrement: null, // New callback
      onDecrement: null, // New callback
      onReset: null      // New callback
    }, options);

    return this.each(function() {
      var $this = $(this);
      var value = settings.initial;

      var methods = {
        getValue: function() { return value; },
        increment: function() {
          value++;
          $this.text(value);
          if ($.isFunction(settings.onIncrement)) {
            settings.onIncrement.call($this[0], value);
          }
        },
        decrement: function() {
          value--;
          $this.text(value);
          if ($.isFunction(settings.onDecrement)) {
            settings.onDecrement.call($this[0], value);
          }
        },
        reset: function() {
          value = settings.initial;
          $this.text(value);
          if ($.isFunction(settings.onReset)) {
            settings.onReset.call($this[0], value);
          }
        },
        init: function() { $this.text(value); }
      };

      $this.data('advancedCounter', methods);
      methods.init();
    });
  };
})(jQuery);

// HTML: <div id="myAdvancedCounter"></div>
$(document).ready(function() {
  $('#myAdvancedCounter').advancedCounter({
    initial: 100,
    onIncrement: function(v) { console.log("Inc: " + v); },
    onReset: function(v) { console.log("Reset to: " + v); }
  });
  var inst = $('#myAdvancedCounter').data('advancedCounter');
  inst.increment();
  inst.reset();
});

공개 메서드와 콜백 사용 팁

플러그인의 공개 인터페이스를 설계할 때 다음 팁을 기억하세요.

  • 일관된 이름 지정: 메서드와 콜백에 명확하고 설명적인 이름을 사용합니다.
  • 오류 처리: 호출하기 전에 콜백이 실제로 함수인지 확인합니다(예: $.isFunction(settings.onComplete)).
  • 컨텍스트: .call() 또는 .apply()를 사용하여 콜백의 this 컨텍스트를 설정합니다. 일반적으로 플러그인이 적용된 요소를 지정합니다.
  • 인수: 관련 데이터를 콜백에 전달합니다(예: 새 값, 이벤트 객체).

플러그인 상호작용 퀴즈

#myElement에 초기화된 jQuery 플러그인을 생각해 보세요. 이 플러그인에는 doSomething()이라는 공개 메서드와 onComplete 콜백이 있습니다.

초기화할 때 공개 메서드를 올바르게 호출하고 사용자 지정 콜백을 전달하는 코드는 무엇인가요?

복습 및 다음 단계

jQuery 플러그인을 진정으로 상호작용 가능하고 유연하게 만드는 방법을 완전히 익히셨습니다!

  • 공개 메서드를 사용하면 초기화가 끝난 후 외부 코드에서 플러그인을 제어하고 정보를 조회할 수 있습니다.
  • 콜백은 사용자가 사용자 지정 로직을 주입할 수 있는 연결 지점을 제공하여 플러그인 내부 이벤트에 반응하도록 합니다.

이러한 기법은 견고하고 재사용 가능하며 사용자 친화적인 jQuery 플러그인을 만드는 데 매우 중요합니다.

자주 묻는 질문

“공개 메서드 및 콜백 통합” 강의는 무료인가요?

네 — “공개 메서드 및 콜백 통합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 jQuery Academy 강의 전체를 잠금 해제할 수 있습니다. jQuery Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“공개 메서드 및 콜백 통합”에서 뭘 배우나요?

외부에서 상호작용할 수 있도록 플러그인에 공개 메서드를 추가하고, 사용자가 특정 플러그인 이벤트에 연결할 수 있도록 콜백 함수를 통합합니다. 브라우저에서 직접 실행하는 실습 코드로 jQuery Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

jQuery Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 jQuery Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.

“공개 메서드 및 콜백 통합” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 jQuery Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 jQuery Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 플러그인 설계 패턴 및 범위 지정
  2. 구성 가능하고 재사용 가능한 플러그인 구축
  3. 공개 메서드 및 콜백 통합
← jQuery Academy(으)로 돌아가기