※ 유틸리티? 플러그인?
- 유틸리티 : 인스턴스를 생성하지 않고 클래스에 직접 접근해 도움을 주는 기능
- 플러그인 : 인스턴스를 생성하여 사용하고 특정 기능을 재사용하고자 할 때 사용하는 포장 기능
※ jQuery 플러그인 소개
- 접근법
jQuery.유틸리티(); 또는 $.유틸리티();
- 자주 사용하는 유틸리티들
- trim() : 공백제거
- index() : 인덱스 탐색
- extend() : 객체 병합
- data() : HTML Element에 <key : value> 형태로 데이터를 저장/조회
jQuery 유틸 참조 : http://api.jquery.com/category/Utilities/
※ jQuery 유틸리티 만들기
- 구조
(function($){
$.유틸리티 = function(){
//유틸리티 기능 구현
}
})(jQuery);
*일반적인 jQuery 유틸리티와 플러그인은 위의 문법에 맞게 구현
$은 jQuery 클래스 자체를 나타낸다.
// 유틸리티 사용
jQuery.유틸리티();
※ jQuery 플러그인 만들기
- 구조
(function($){
$.fn.플러그인이름 = function(속성값){
this.each(function(index){
//플러그인 기능구현
}
return this;
}
})(jQuery);
*플러그인은 jQuery의 fn이란 곳에 플러그인을 생성
fn은 prototype을 줄여 쓴 닉네임 이다.
즉 jQuery플러그인은 jQuery 인스턴스의 메서드일 뿐 (이러한 인스턴스 메서드에 관한 설명은
자바스크립트 클래스 (1), (2)란 글에 나와있다.
ex)
function jQuery(){
...
}
jQuery.prototype.플러그인 이름 = function(){
...
}
*this.each를 쓰는 이유
$("태그").플러그인이름() 이런식으로 사용할 때 이 태그가 하나가 될 수도 있고 여러개가 될 수도있다.
each를 통해 $()메서드로 만들어진 jQuery객체의 모든 태그들에 플러그인 기능을 적용시킬 수 있다.
*return this를 하는 이유
jQuery 는 체인구조가 가능하다.
즉 $(선택자).플러그인이름().플러그인이름().on(....) 이런식 이라던가
var $obj = $(선택자);
$obj.on(.....);
$obj.플러그인이름(); 과 같은 방식의 호출이 가능하다.
이러한 호출방식이 가능하게 하려면 this를 리턴해주어 플러그인이 기능이 적용된 객체를 리턴해야 한다.
※ 함수기반 플러그인과 클래스기반 플러그인
- 함수기반 플러그인은 함수기반 코딩과 마찬가지로 플러그인 내부 메서드 중복 생성이 되기 때문에 클래스기반의 플러그인을 만들면 함수기반 플러그인의 단점을 커버할 수 있다.
- 함수 기반 플러그인의 형태
(function($){
$.fn.플러그인 이름 = function(속성값){
this.each(function(index){
//기능 구현
function method1(){
...
}
function method2(){
...
}
function method3(){
...
}
.....
//메서드 호출 위치는 상황에따라 유동적으로...
method1();
method2();
method3();
...
})
return this;
}
})(jQuery)
- 클래스 기반 플러그인의 형태
(function($){
//클래스 생성 및 클래스에서 사용될 메서드를 프로토타입으로 생성
function UserClass(selector){
...
this.method1();
this.method2();
this.method3();
...
}
UserClass.prototype.method1 = function(){
...
}
UserClass.prototype.method2 = function(){
...
}
UserClass.prototype.method3 = function(){
...
}
....
$.fn.플러그인 이름 = function(속성값){
this.each(function(index){
//인스턴스 생성
var userClass= new UserClass(this);
});
return this;
}
})(jQuery)
'플밍 is 뭔들 > JavaScript&jQuery' 카테고리의 다른 글
[JavaScript] 자바스크립트 객체지향 프로그래밍 기초 (0) | 2017.08.20 |
---|---|
[jQuery] jQuery 플러그인 그룹 (0) | 2017.08.19 |
[JavaScript] 자바스크립트 클래스 (2) (0) | 2017.08.14 |
[JavaScript] 자바스크립트 클래스 (1) (0) | 2017.08.11 |
[jQuery] 좌표 개념, 위치(좌표) 다루기, 크기 다루기 (0) | 2017.08.01 |