JavaSciprt의 모듈화
- jQuery는 막강한 기능과 다양한 플러그인을 통해서 많은 프로젝트에서 기본으로 사용
- Ajax를 이용하는 경우에는 jQuery의 함수를 이용해서 너무나 쉽게 처리할 수 있기 때문에 많이 사용
- 화면 내에서 JavaScript 처리를 하다 보면 어느 순간 이벤트처리와 DOM 처리, Ajax 처리 등이 마구 섞여서 유지보수 하기 힘든 코드를 만드는 경우가 많음, 이런 경우를 대비해서 좀 더 JavaScript를 하나의 모듈처럼 구성하는 방식을 이용하는 것이 좋음
- JavaScript에서 가장 많이 사용하는 패턴 중 하나는 모듈 패턴
- 관련 있는 함수들을 하나의 모듈처럼 묶음으로 구성하는 것을 의미
- JavaScript의 클로저를 이용하는 가장 대표적인 방법
// 모듈 패턴
- jsModule.js
console.log("JS Module..........")
var runfunction = (function() {
reutrn { test:"TEST"};
}) ();
- Java의 클래스처럼 JavaScript를 이용해서 메서드를 가지는 객체를 구성
- 모듈 패턴은 JavaScript의 즉시 실행함수와 '{}'를 이용해서 객체를 구성
- JavaSciprt의 즉시 실행함수는 () 안에 함수를 선언하고 바깥쪽에서 실행해 버림
- 함수의 실행 결과가 바깥쪽에 선언된 변수에 할당
- runfunction이라는 변수에 test이라는 속성에 'TEST'라는 속성값을 가진 객체가 할당
// 실행 jsp
- test.jsp
<script type="text/javascript" src="/resources/js/jsModule.js"></script>
<script type="text/javascript">
$(document).ready(function() {
console.log(runfunction);
});
</script>
console.log("Reply Module.....");
// jsp에서 호출해서 사용할 객체
var replyService = (function() {
// JavaScript에서는 함수의 파라미터 개수를 일치시킬 필요가 없음(callback, error 등 필요에 따라 작성)
function add(reply, callback, error) {
console.log("add reply");
$.ajax({
type : 'POST', // 전송 방식('GET' OR 'POST')
url : '/replies/new', // 요청할 URL(컨트롤러 단에서 호출할 주소)
data : JSON.stringify(reply), // 서버에 전송할 데이터
contentType : "application/json; charset=utf-8", // 서버에 전송할 타입(JSON/utf-8)
success : function(result, status, xhr) { // 요청 및 응답에 성공했을 때 실행할 함수
if(callback) {
callback(result);
}
},
error : function(xhr, status, er) { // 요청 및 응답에 실패했을 때 실행할 함수
if(error) {
error(er);
}
}
})
}
return {
add : add
};
})();
JSON.stringify(value, replacer, space) 메서드
- JavaScript 값이나 객체를 JSON 텍스트로 바꾸고 해당 JSON 텍스트를 문자열에 저장
- 객체/배열에서 JSON 문자열을 만드는데 사용
- value(필수) : JSON 문자열로 변환할 값
- replacer(선택) : 이 값이 null 이거나 제공되지 않을 경우 객체의 모든 속성이 결과 JSON 문자열에 포함
- space(선택) : 가독성을 위해 출력 JSON 문자열에 공백을 삽입하는데 사용되는 String or Number 객체
'프로그래밍 > Spring' 카테고리의 다른 글
댓글의 REST 방식의 등록 작업 (0) | 2022.02.22 |
---|---|
[Mybatis] <trim> (0) | 2022.02.18 |
request.getParameter 조건 빈칸, null 주의 사항 (0) | 2022.01.26 |
[Spring-security] JDBC를 이용한 쿼리 호출시 log에창 안뜨는 문제 (0) | 2021.05.21 |
[Spring Security]Spring project에 Spring Security 적용 (0) | 2021.05.20 |