Backone.js 프로그래밍

June 3, 2015

3장. Backbone의 기본

Model

  • toJSON()은 Model의 attributes를 복사하여 반환한다. 하지만 이름과는 다르게 JSON 문자열로 반환하지는 않는다.
  • validate() 메서드는 검증에 사용한다. 이 함수는 set() 함수를 실행할 때 {validate: true}를 함께 넘겨주면 된다. 만약 필요한 값이 없으면 모델 내에서 invalid 이벤트를 발생시킨다.
  • 모델 변경 시 change 이벤트가 발생한다. 특정 키를 감시하고 싶으면 change:key 이벤트를 감시하고 있으면 된다.

View

  • el은 리플로우, 리페인팅을 줄이기 위해서 뷰에서 가지고 있는 속성이다.
  • render() 함수에서 return this를 하는 이유는 랜더링이 필요없는 요소의 목록을 만들거나 전체 목록이 이입된 후에 실제 DOM에 붙일 수 있도록 만들기 위해서다.
  • this.model.bind('change', _.bind(this.render, this)); 모델이 변경되었을 때 실행할 함수를 View에서 정의할 수 있다.

Collection

  • 모델의 추가는 add(), 모델의 삭제는 remove()를 이용하면 된다.
  • add()함수에 {merge: ture}를 함께 넘길 수 있다. 이 옵션은 중복된 모델이 있을 경우 덮어쓴다.
  • 컬렉션의 Getter는 모델을 조회할 때도 이용할 수 있다. get(id or cid)라고 함수를 실행하면 해당 id or cid에 해당하는 모델을 반환한다. 모델을 정의할 때 idAttribute를 다른 것(eg. userId)으로 설정할 수도 있다.
  • 컬렉션에도 모델의 변경을 감시할 수 있다. 모델과 마찬가지로 change:key 이벤트가 발생된다.
  • set()함수는 컬렉션 재설정할 때 유용하며 add, remove, change 이벤트를 발생시킨다.
  • reset()함수도 컬렉션을 재설정 할 때 사용하며 reset 이벤트가 발생된다.
  • update()함수는 set()과 비슷한 것 같은데 차이를 모르겠다. 나중에 봐야지

Event

  • 백본에서는 콜론을 사용하여 네임스페이스를 추가한 이벤트 이름을 사용하길 권고한다. (eg. dance:tap, dance:break)
  • all은 모든 이벤트를 감시한다. (eg. .on('all', function () {}))
  • off()함수는 콜백함수의 이름을 전달하여 특정 콜백이 실행되는 것을 막을 수 있는 기능이 있다.
  • trigger() 함수는 콜백함수에 arguments를 전달한다.
  • trigger() 함수는 다수의 이벤트에 다수의 인자를 전달 할 수 있다.
  • listenTo() 함수는 타 객체의 이벤트 리스닝을 가능하게 하는 녀석이다.
  • 고스트 뷰는 가비지 컬렉터가 뷰를 제거하지 않아서 발생한다. 이 경우 메모리 누수가 발생한다. remove()함수나 stopListening()은 이를 해결할 수 있다.

Router

  • 별거 없다.

Backbone.history

  • {trigger: true}옵션은 라우트 경로를 트리거하여 다른 함수가 실행되도록 만든다. (책에 예제 있다)
  • route 이벤트는 Backbone.history 뿐만 아니라 라우터 상에서도 트리거 될 수 있다.

Backbone Sync API

  • 집중이 안되서 다음 기회에 …

Comments

comments powered by Disqus