JavaScript 프로그램이 점점 더 복잡해지면서 팀의 협력과 개발이 필요한 경우가 많습니다. 이때 코드의 모듈화 및 구성 사양이 매우 중요해집니다. MVC 패턴은 코드 구성의 고전적인 패턴입니다.
(…MVC 소개.)
(1)모델
모델은 프로그램에서 요구하는 데이터 소스인 데이터 레이어를 나타내며, 일반적으로 JSON 형식으로 표현됩니다.
(2)보기
뷰는 사용자 인터페이스인 프리젠테이션 레이어를 나타냅니다. 웹페이지의 경우 사용자가 보는 웹페이지의 HTML 코드입니다.
(3)컨트롤러
Controller는 원본 데이터(Model)를 처리하여 View로 전송하는 데 사용되는 제어 계층을 나타냅니다.
웹 프로그래밍은 클라이언트 프로그래밍과 다르기 때문에 MVC를 기반으로 JavaScript 커뮤니티에서는 MVP(Model-View-Presenter), MVVM(Model-View-ViewModel) 등 다양한 변형 프레임워크를 제작했습니다. 이러한 유형의 프레임워크 모드를 총칭하여 MV*라고 합니다.
프레임워크의 장점은 코드를 합리적으로 구성하고 팀워크와 향후 유지 관리를 용이하게 한다는 점이지만, 학습 비용이 일정하고 작성 방법에 제한이 있다는 단점이 있습니다.
백본 로딩
백본.뷰
기본 사용법
Backbone.View 메소드는 뷰 클래스를 정의하는 데 사용됩니다.
위 코드는 Backbone.View의 확장 메소드를 통해 AppView 뷰 클래스를 정의합니다. 이 클래스 내부에는 웹 페이지에 뷰를 배치하는 데 사용되는 render 메서드가 있습니다.
사용시에는 먼저 뷰 클래스의 새 인스턴스를 생성한 후 해당 인스턴스를 통해 render 메소드를 호출하여 웹페이지에 뷰를 표시해야 합니다.
새 뷰 인스턴스를 생성할 때 일반적으로 모델을 지정해야 합니다.
초기화 방법
뷰는 인스턴스가 생성될 때 초기화 메서드를 정의할 수도 있으며, 이 메서드는 인스턴스를 초기화하기 위해 자동으로 호출됩니다.
위 코드에서 초기화 메소드를 정의한 후, 인스턴스 생성 후 appView.render()를 수동으로 호출하는 단계는 생략됩니다.
el 속성, $el 속성
렌더링 메소드에서 직접 "뷰"에 바인딩된 웹페이지 요소를 지정하는 것 외에도 뷰의 el 속성을 사용하여 웹페이지 요소를 지정할 수도 있습니다.
tagName 속성, className 속성
el 속성을 지정하지 않은 경우 tagName 속성, className 속성을 통해서도 지정할 수 있습니다.
템플릿 방법
뷰의 템플릿 속성은 웹페이지 템플릿을 지정하는 데 사용됩니다.
실제 애플리케이션에서는 일반적으로 템플릿이 스크립트 태그에 배치되는데, 이는 브라우저가 JavaScript 코드에 따라 파싱하는 것을 방지하기 위해 유형 속성을 text/template으로 설정합니다.