본문 바로가기

전체 글

(229)
ORM 만들기 오브젝트 관계형 매퍼(ORM)는 보통 자바스크립트 언어 이외의 다른 언어에서 사용한다. 그러나 데이터 관리에 사용하는 유용한 기법인 ORM을 자바스크립트 애플리케이션 모델에도 활용할 수 있다. 예를 들어 ORM을 이용해 모델을 원격 서버와 묶을 수 있다. 모델을 원격 서버와 묶은 상태에서 모델 인스턴스를 변경하면 백그라운드 Ajax 요청을 서버로 보낸다(즉 인스턴스에 발생한 변화를 백그라운드로 서버에 전달한다). 또는 모델을 HTML 엘리먼트 인스턴스와 묶을 수도 있다. 그러면 인스턴스에 발생한 변화가 뷰에 반영된다. 본질적응로 ORM은 단지 데이터를 감싸는 오브젝트 계층일 뿐이다. 보통 SQL 데이터베이스를 추상화할 때 ORM을 사용하지만 우리가 살펴보려는 것처럼 자바스크립트 데이터 타입을 추상화할 때..
MVC와 명칭공간 애플리케이션의 뷰, 상태, 데이터를 완벽하게 분리하면 애플리케이션 구조를 깔끔하게 유지할 수 있으므로 지속가능한 애플리케이션을 만들 수 있다. MVC 패턴에서 데이터 관리는 모델(M of MVC)에 해당한다.모델은 뷰, 컨트롤러와 분리되어야 한다. 모델에 포함하는 데이터 조작과 관련한 로직이나 행동 등에는 적절하게 명칭공간을 사용해야 한다. 자바스크립트에서는 함수와 변수를 명칭공간으로 추가하여 함수와 변수를 오브젝트의 프로퍼티로 만들 수 있다. var User = { records: [ ] } 모든 모델의 프로퍼티를 명칭공간 아래에 추가하여 충돌을 피할 수 있으며 MVC를 준수하는 모델을 유지할 수 있다. 명칭공간을 이용해야 함수와 콜백이 서로 엉망으로 뒤얽히는 상황을 피할 수 있다. 실제 사용자 옵젝트..
비공개 함수 추가하기 자바스크립트는 수정할 수 없는 프로퍼티 기능을 지원한다. 그러나 주요 브라우저에서 아직 이 기능을 구현하지 않았으므로 이용할 수가 없다. 대신 자바스크립트의 익명 함수를 이용해 내부에서만 접근할 수 있는 비고액 범위를 만들 수 있다. var Person = function() {}; (function() { var findById = function() {}; Person.find = function(id) { if(typeof id == 'integer') return findById(id); } })(); 위 예제에서는 클래스의 모든 프로퍼티를 익명 함수로 감쌌다. 따라서 지역 변수 findById는 현재 범위에서만 접근할 수 있다. Person 변수는 전역으로 정의했으므로 어디에서나 접근할 수 있다..