모듈패턴 및 JSON
JSON이란?
GET HTTP 요청을 사용하여 서버에서 JSON으로 인코딩 된 데이터를 불러오는 기능을 말합니다.
JSON은 문자열 형태지만javascript는 data를 access하기위해 JSON 객체로 변환합니다.
javascript는 JSON 전역객체를 통해 문자열과 상호변환을 지원 !!!
- url : 요청을 보내는 URL 문자열
- data : 요청과 함께 서버에 전송되는 객체
- success : 요청이 성공시 실행되는 콜백 함수
모듈 패턴
Java클래스처럼 JavaScript를 이용해 메소드를 가지는 객체를 구성하는 것을 말합니다.
즉시 실행함수는 함수내부에 필요한 메소드를 구성하여 객체를 구성하는 방법을 말하며 자바스크립트의 즉시 실행함수는 첫번째 ( )
안에 함수를 선언하고 바깥쪽 ( )
에서 실행합니다.
예제
var replyService = (function(){
return {name : "AAA"};
})();
위에 코드를 가진 js파일을 작성 후 보여줄 jsp 파일내에 자바스크립트 파일 경로를 추가합니다.
<script type="text/javascript" src="/resources/js/reply.js"></script>
view(jsp)
파일에 아래와 같이 자바스크립트를 작성합니다
<script type="text/javascript">
$(document).ready(function(){
console.log(replyService);
});
</script>
이후 서버를 가동시키고 /board/get?bno=xxx
경로를 브라우저에 입력하면 아래 사진과 같이 개발자도구에서 확인이 가능합니다.
즉시 실행 함수
함수 리터럴을 괄호 ()
로 둘러싼 후 다음 ()
를 추가한다. 두번째 괄호에서 메소드가 실행되며 안에 인자를 넘길 수 있습니다.
즉시 실행함수의 경우 함수를 다시 호출할 수 없어 최초 한 번의 실행만을 필요로 하는 초기화 코드 부분에 사용합니다.
JQuery에서 즉시 실행 함수를 사용한 이유?
자바스크립트는 변수의 유효 범위 특성
을 가지고 있기 때문입니다.
자바스크립트는 변수를 선언시 전역 유효범위를 가지게 되지만 함수 내에 정의된 매개변수와 변수는 내부에서만 유효할 뿐 함수 밖에서는 유효하지 않습니다. 이를 통해 함수 외부의 코드에서 내부의 변수에 접근하는 것이 불가능하다는 것을 알 수 있습니다.
라이브러리 코드를 즉시 실행 함수 내부에 정의를 한다면 라이브러리 내에 변수들은 함수 외부에서 접근할 수 없기때문에 실행 함수 내에 라이브러리 코드를 추가해도 전역 네임스페이스를 건들지 않아 충돌 문제를 방지할 수 있습니다.
모듈 패턴의 절차
네임스페이스 설정
replyService.add({reply : "JS Test", replyer : "tester", bno : bnoValue},
function(result) {
alert("Result : " + result);
}
);
모듈 정의
var replyService = (function(){
//댓글 추가
function add(reply, callback, error){
console.log("add reply!!!!!!!!");
$.ajax({
type : 'post',
url : '/replies/new',
data : JSON.stringify(reply),
contentType : "application/json; charset=utf-8",
success : function(result, status, xhr) {
if(callback) {
callback(result);
}
},
error : function(xhr, status, er) {
if(error) {
error(er);
}
}
})
}
return {
add : add
};
})();
xhr?
XMLHttpRequest
자바스크립트 객체로 서버로부터 다양한 리소스를 가져오는 요청을 만들어주는 기능
Reference
'TIL' 카테고리의 다른 글
201910516_예제로 배우는 스프링 입문 2 (0) | 2019.05.17 |
---|---|
20190515_예제로 배우는 스프링 입문 (0) | 2019.05.15 |
20190512_RestAPI 기초 개념 설정 (0) | 2019.05.15 |
20190410 [mac] 깃허브(Github) remote:Permission to 에러 (183) | 2019.04.10 |