Backbone.js의 개발 환경을 구축하고 MVC 모드로 써봤어요.
13092 단어 JavaScriptBackbone.jsyeoman
이번에는 Yeoman의backbone 발생기를 이용했다.생성기를 사용하는 이유로는 처음이기 때문에 가장 좋은 실천 구성을 먼저 알고 싶고, 커피스크립트로 쓰기 위한 환경을 위해 간단하게 만들려고 한다.
Yeoman의 생성기를 이용하면 Grunt/Bower 주변 환경이 어느 정도 통일돼 있어 가볍다.
환경 구조
전제 조건
Mac OS X 10.9.5 (Mavericks)
bacbone 생성기를 설치하지 않은 경우 다음과 같이 설치합니다.
$ npm install -g generator-backbone
그 결과 이번에 이용된 공구/고군의 상세한 버전은 다음과 같다.
1.3.3
0.3.3
1.1.2
2.1.1
.. Backbone.js 의존 2.4.1
.. Backbone.js 의존 절차.
생성기를 시작합니다.
$ yo backbone
이번에는 CoffScript만 선택했습니다.
초기 형태 생성이 완료되면 JavaScript 라이브러리 클래스가 포함되지 않으므로 Bower를 사용하여 설치합니다.
$ bower install
파일이 다음과 같이 확장되었습니다.
여기서 동작을 확인하세요.
$ grunt serve
Backbone.js로 써주세요.
Backbone.js의 주요 구성 요소는
Model
Collection
View
Router
Model
이다.이 Yeoman 환경에서는 각각 다음 생성 명령이 준비되어 있습니다.$ yo backbone:model hoge
$ yo backbone:collection hoge
$ yo backbone:view hoge
$ yo backbone:router hoge
또한 백본 생성기의 설명은 GiitHub을 통해 확인할 수 있다.⇒ https://github.com/yeoman/generator-backbone
이번에는 최소한
View
과Model
만 사용한다.$ yo backbone:model hoge_model
$ yo backbone:view hoge_view
그리고 아래View
와 name
의 모형을 생성한다.지금부터 소스를 쓰겠습니다.결과적으로 나는 이렇게 간단한 물건을 만들 수 있을 것이다.
Backbone.js의 사상?사용자 입력은 컨트롤러를 통해 모델에 반영되고 보기는 모델의 변경을 감지하며 자신의 디스플레이 내용을 변경합니다.
이번 소스는 기릿허브에도 있어요.
⇒ https://github.com/hkusu/Backbone.js_demo
모델 생성
기본적으로 모두 초기 모양입니다. 이번에 처리된 두 개의 값
age
View
의 기본값 (비어 있음) 을 설정합니다.app/scripts/models/hoge_model.coffee
'use strict';
class BackboneTest.Models.HogeModel extends Backbone.Model
url: ''
initialize: () ->
defaults:
name: ""
age: ""
validate: (attrs, options) ->
parse: (response, options) ->
response
View 및 템플릿 생성
번거롭지만 백본.js에서 말한
<$= ほげほげ %>
는 다른 프레임워크의 컨트롤러입니다.먼저 템플릿부터 시작합니다.표시 부분은
input
로 변수를 기록합니다.입력 부분은 jQueryView
에서 탭을 주우기 때문에 원본 파일에서는 아무것도 하지 않지만 id와class를 지정하는 것이 좋습니다.app/scripts/templates/hoge_view.ejs
<p>
名前:<%= name %>
</p>
<p>
年齢:<%= age %>
</p>
<hr>
<p>
新しい年齢:<input type="text" />
<br>
<font size="1px" color="orange">
Model へ反映 ⇨ 自動的に View へ反映されるデモです。<br>
ただリアルタイムデータバインドが聞いてないのでカーソル外してください..</font>
</p>
다음에 쓰기 event
(다른 프레임의 컨트롤러).추가 방법은 input
에서 라벨을 줍는 변경(=컨트롤러의 역할)과 inputCange
방법이다.주의해야 할 것은
inputCange
메서드가 Model을 업데이트했습니다.listenTo
에서 모델의 변경을 감시하고 변경이 있을 때 다시 묘사한다.'use strict';
class BackboneTest.Views.HogeView extends Backbone.View
template: JST['app/scripts/templates/hoge_view.ejs']
tagName: 'div'
id: ''
className: ''
events:
"change input": "inputCange"
inputCange: () ->
@model.set("age", @$("input").val())
initialize: () ->
@listenTo @model, 'change', @render
render: () ->
@$el.html @template(@model.toJSON())
전체 국면을 통합하다.
브라우저에 View를 표시하기 위해
index.html
에 div 태그를 추가했습니다.app/index.html
〜
<div id="hoge"></div>
〜
마지막main.coffee
index.html
app/scripts/main.coffee
window.BackboneTest =
Models: {}
Collections: {}
Views: {}
Routers: {}
init: ->
'use strict'
model = new @Models.HogeModel(
name: "山田 太郎"
age: 31
)
view = new @Views.HogeView(
el: $("#hoge")
model: model
)
view.render()
return
$ ->
'use strict'
BackboneTest.init();
시위행진은 여기에 뒀다(GiitHub Pages).⇒ http://hkusu.github.io/Backbone.js_demo/dist/
맺음말(Backbone.js에 대한 소감)
전에 들어봤지만 한 가지를 이루기 위해서는 다양한 곳에서 기술할 필요가 있다고 생각했고, 다른 한편으로는 틀에 얽매여 있어서 실현 방법이 통일되지 않았다.
그리고 모델이 잘 썼다고 생각해요.서버 측과의 모델 협업 & 데이터 구조 정의를 명확히 하는 시스템.
뷰 주위가 단일체라면 약할 것 같은데(jQuery를 직접 만지작거리는 기분) 다른 프로그램 라이브러리와 조합해서 사용하면Marionette.js 없앨 수 있을 것 같아요.
Reference
이 문제에 관하여(Backbone.js의 개발 환경을 구축하고 MVC 모드로 써봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hkusu/items/6cab9b5e4ccf75901b4e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)