jQuery Academy · 강의

구성 가능하고 재사용 가능한 플러그인 구축

기본 옵션을 제공하고 사용자가 설정을 재정의할 수 있으며, 최소한의 노력으로 여러 프로젝트에서 재사용할 수 있는 플러그인을 개발합니다.

레슨 2/311개 단계

구성 가능하고 재사용 가능한 플러그인 구축은(는) CoddyKit의 무료 jQuery Academy 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 jQuery Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. jQuery Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

설정 가능한 플러그인 소개

환영합니다! 이 레슨에서는 jQuery 플러그인을 유연하고 쉽게 조정할 수 있도록 만드는 방법을 배웁니다. 몇 가지 옵션만 지정하면 색상, 속도 또는 텍스트를 변경할 수 있는 플러그인을 떠올려 보세요.

이는 코드를 다시 작성하지 않고도 다양한 프로젝트에서 사용할 수 있는 도구를 만드는 데 매우 중요합니다.

기본 옵션을 사용하는 이유

플러그인은 별도의 설정 없이도 바로 작동해야 하지만, 사용자 지정도 허용해야 합니다. 이때 기본 옵션이 사용됩니다.

  • 기본 동작: 플러그인이 작동하는 표준 방식을 제공합니다.
  • 편리한 사용: 사용자는 모든 설정을 지정하지 않고도 플러그인을 초기화할 수 있습니다.
  • 유연성: 사용자는 기본값을 재정의하여 자신의 필요에 맞게 플러그인을 조정할 수 있습니다.

플러그인 기본값 정의

플러그인 내부의 객체로 기본 옵션을 정의합니다. 이 객체에는 플러그인에서 사용할 수 있는 모든 설정과 초기값이 들어갑니다.

이 기본 플러그인 구조를 실행하여 기본값이 어떻게 선언되는지 확인해 보세요.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div id="myElement">Hello</div>
<script>
(function($) {
  $.fn.myPlugin = function(options) {
    // Define default settings here
    var defaults = {
      color: "blue",
      fontSize: "16px",
      message: "Default message!"
    };
    
    // For now, let's just log the defaults
    console.log("Plugin defaults:", defaults);
    
    return this; // Always return 'this' for chaining
  };
})(jQuery);

$(document).ready(function() {
  $('#myElement').myPlugin();
});
</script>

사용자 옵션 병합: $.extend()

사용자가 설정을 사용자 지정할 수 있도록 하려면, 사용자가 제공한 옵션을 기본값과 병합해야 합니다. jQuery의 $.extend() 메서드가 이 작업에 적합합니다.

$.extend({}, defaults, options)는 새 객체를 만들고, 먼저 defaults의 속성을 복사한 다음 해당 속성이 있으면 options의 속성으로 덮어씁니다.

$.extend() 사용하기

플러그인 내부에서 $.extend()를 사용하는 방법은 다음과 같습니다. 사용자의 color와 text가 기본값을 재정의하지만, 제공되지 않은 fontSize는 기본값으로 유지되는 것을 확인해 보세요.

이 코드를 실행하고 콘솔 출력을 확인해 보세요!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
(function($) {
  $.fn.myPlugin = function(options) {
    var defaults = {
      text: "Default text",
      color: "blue",
      fontSize: "16px"
    };
    
    // Merge defaults with user-provided options
    var settings = $.extend({}, defaults, options);
    
    console.log("Final settings:", settings);
    
    return this; // Keep chaining ability
  };
})(jQuery);

$(document).ready(function() {
  // User provides custom options
  $('body').myPlugin({
    text: "Custom Text!",
    color: "red"
  });
});
</script>

병합된 설정에 접근하기

settings 객체(병합된 기본값과 사용자 옵션을 포함함)를 얻으면 settings.color 또는 settings.animationSpeed처럼 점 표기법을 사용하여 모든 속성에 간단히 접근할 수 있습니다.

이렇게 하면 플러그인이 항상 올바른 최종 구성을 사용하게 됩니다.

실용적인 도구 설명 플러그인

사용자가 텍스트, 배경색, 표시되기 전의 지연 시간을 사용자 지정할 수 있는 간단한 도구 설명 플러그인을 만들어 보겠습니다. 이를 통해 설정 가능한 옵션이 플러그인을 훨씬 더 다용도로 만들어 주는 방식을 알아봅니다.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<style>
  .coddy-tooltip { /* Use unique class name */
    position: absolute;
    background-color: #333;
    color: white;
    padding: 5px 8px;
    border-radius: 3px;
    display: none;
    font-family: sans-serif;
    font-size: 14px;
  }
</style>
<button id="hoverMe">Hover Over Me</button>
<script>
(function($) {
  $.fn.coddyTooltip = function(options) {
    var defaults = {
      text: "Default Tooltip",
      bgColor: "#333",
      textColor: "white",
      delay: 200 // ms before showing
    };
    var settings = $.extend({}, defaults, options);

    return this.each(function() {
      var $this = $(this);
      var $tooltip = $('<div class="coddy-tooltip"></div>')
                       .text(settings.text)
                       .css({
                         'background-color': settings.bgColor,
                         'color': settings.textColor
                       })
                       .appendTo('body');

      var timeoutId; // To clear previous timeouts

      $this.on('mouseenter', function() {
        clearTimeout(timeoutId);
        timeoutId = setTimeout(function() {
          var offset = $this.offset();
          $tooltip.css({
            top: offset.top - $tooltip.outerHeight() - 5,
            left: offset.left + ($this.outerWidth() / 2) - 
                   ($tooltip.outerWidth() / 2)
          }).fadeIn(100);
        }, settings.delay);
      }).on('mouseleave', function() {
        clearTimeout(timeoutId);
        $tooltip.fadeOut(100);
      });
    });
  };
})(jQuery);

$(document).ready(function() {
  // Initialize the tooltip with custom options
  $('#hoverMe').coddyTooltip({
    text: "Hello from CoddyKit!",
    bgColor: "darkblue",
    delay: 500
  });
});
</script>

재사용성을 고려한 설계

설정 기능 외에도, 진정으로 견고한 플러그인은 재사용 가능해야 합니다. 즉, 어떤 프로젝트에든 추가하여 별도의 충돌이나 특정 설정 없이 작동할 수 있어야 합니다.

  • 캡슐화: IIFE (function($){...})(jQuery);를 사용하여 코드를 비공개로 유지합니다.
  • `this.each()`: 선택된 요소를 항상 순회하여 일치하는 모든 항목에 로직을 적용합니다.
  • 전역 오염 방지: 전역 변수나 함수를 만들지 않습니다.
  • 독립적인 로직: 플러그인은 명시적으로 문서화된 경우가 아니라면 외부 스크립트나 스타일에 의존하지 않아야 합니다.

`this.each()`의 중요성

사용자가 $('.my-class').myPlugin()처럼 선택 항목에 플러그인을 호출하면 jQuery가 여러 요소를 반환할 수 있습니다. return this.each(function(){ ... }); 패턴을 사용하면 해당 선택 항목의 각 개별 요소에서 플러그인 로직이 실행됩니다.

each 콜백 내부에서 this는 현재 처리 중인 DOM 요소를 가리킵니다.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<script>
(function($) {
  $.fn.highlight = function(options) {
    var defaults = {
      color: "yellow"
    };
    var settings = $.extend({}, defaults, options);

    return this.each(function() {
      // 'this' refers to the current DOM element in the loop
      $(this).css('background-color', settings.color);
    });
  };
})(jQuery);

$(document).ready(function() {
  // Apply highlight to all elements with class 'item'
  $('.item').highlight({ color: "lightblue" });
});
</script>

빠른 확인: 플러그인 모범 사례

설정 가능하고 재사용 가능한 jQuery 플러그인을 만드는 방법을 이해했는지 확인해 보세요!

복습: 설정 가능성과 재사용성

강력하고 유연하게 조정할 수 있는 jQuery 플러그인을 만드는 방법을 완전히 익히셨습니다!

  • 기본 동작을 위해 기본 옵션을 정의합니다.
  • $.extend()를 사용하여 사용자 옵션을 병합하고 사용자 지정을 허용합니다.
  • return this.each()를 사용하여 플러그인이 선택된 여러 요소에서 작동하도록 합니다.
  • 코드를 IIFE로 캡슐화하여 재사용성을 높이고 전역 충돌을 방지합니다.

이러한 기법을 사용하면 플러그인이 견고하고 유연해지며 어떤 프로젝트에도 사용할 수 있습니다!

무료로 시작

AI 튜터와 함께 JavaScript을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
22
레슨
48

자주 묻는 질문

“구성 가능하고 재사용 가능한 플러그인 구축” 강의는 무료인가요?

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

“구성 가능하고 재사용 가능한 플러그인 구축”에서 뭘 배우나요?

기본 옵션을 제공하고 사용자가 설정을 재정의할 수 있으며, 최소한의 노력으로 여러 프로젝트에서 재사용할 수 있는 플러그인을 개발합니다. 브라우저에서 직접 실행하는 실습 코드로 jQuery Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

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

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

“구성 가능하고 재사용 가능한 플러그인 구축” 강의는 얼마나 걸리나요?

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

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

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

이 강의의 모든 강의

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