기존에 작성한 index.html 파일안에는 템플릿에 대한 내역도 같이 포함되어 있다. 해당 템플릿 내역을 별도의 파일로 때어 내어 AMD 모듈화와 결합하는 방법을 알아본다.
1) Require.js 플러그인 test.js 설치
- 텍스트 파일을 로딩하는 text.js 파일을 적절한 위치에 설치 (여기서는 require.js 랑 같은 위치에 설치함)
- 다운로드 : http://requirejs.org/docs/download.html#text
2) index.html 에서 템플릿내역 분리하기
- 템플릿 영역 분리하여 ride_template.html 명칭으로 index.html 과 같은 위치에 저장
////////////////////////////////
// index.html 내부
<div id="rides">
<div id="addRide">
<label for="coverImage">CoverImage: </label><input id="coverImage" type="file" />
<label for="title">Title: </label><input id="title" type="text" />
<label for="rider">Rider: </label><input id="rider" type="text" />
<label for="ridingDate">Riding date: </label><input id="ridingDate" type="text" />
<label for="keywords">Keywords: </label><input id="keywords" type="text" />
<button id="add">Add</button>
</div>
<!-- 주석처리 사용하지 않음 / 또는 제거함
script id="rideTemplate" type="text/template">
<img src="<%= coverImage %>"/>
<ul>
<li><%= title %></li>
<li><%= rider %></li>
<li><%= ridingDate %></li>
<li><%= keywords %></li>
</ul>
<button class="delete">Delete</button>
</script-->
</div>
////////////////////////////////
// ride_template.html 전체 내역
<img src="<%= coverImage %>"/>
<ul>
<li><%= title %></li>
<li><%= rider %></li>
<li><%= ridingDate %></li>
<li><%= keywords %></li>
</ul>
<button class="delete">Delete</button>
3) ride.js 파일에 템플릿 의존성 주입
- AMD는 SOLID의 Dependency Inversion Principle과 같은 원리. 즉, 스프링의 Inversion Of Control 과 같은 방식이다.
- 따라서 모듈 ride_template.html 을 ride.js 에 주입해 보자
+ define([의존관계], 파라미터) : 의존관계에 템플릿 파일 상대 경로 지정
+ 기존 template 프로퍼티의 값을 파라미터로 변경
define(['jquery', 'backbone', 'underscore', 'text!../ride_template.html', 'jquery.dateformat'], function($, Backbone, _, rideTemplate) {
.. 중략 ..
var RideView = Backbone.View.extend({
tagName:"div",
className:"rideContainer",
//template: $("#rideTemplate").html(),
template: rideTemplate,
render:function () {
.. 중략 ..
4) 브라우져 호출
- 호출후 크롬 개발자 도구의 DOM 구성 : rideContainer div 태그안에 ride_template.html 이 들어가 있다
** 전체 소스
<참조>
- text.js 사용법 : prefix로 반드시 text!을 붙여서 정적파일을 로딩한다
'Backbone.js' 카테고리의 다른 글
[Backbone.js] MarionetteJS 로 백본 확장하기 (0) | 2013.03.26 |
---|---|
[Backbone.js] Basic Tutorial & 개발 Workflow (2) | 2013.03.23 |
[Backbone.js] 서점 샘플 응용하기 - 03 (AMD 모듈화 하기) (0) | 2013.03.18 |
[Backbone.js] RequireJS를 통한 브라우져상의 모듈화 (0) | 2013.03.16 |
[Handlebar.js] Client Side 템플릿 엔진 사용하기 (0) | 2013.03.16 |