javascriptのmvc開発について調べてみた 〜backbone.js〜

53
<§Âöª¾ í» ï± ¼Öϲ JavascriptMVC開発について調べてみた BACKBONE.JS未発表 13526日日曜日

Upload: toshio-ehara

Post on 25-May-2015

3.823 views

Category:

Documents


2 download

DESCRIPTION

HTML5+α初心者勉強会 @福岡 第1回で発表しようとしていた資料です! もしかしたら第2回でそのまま使うかもしれませんので第2回いらっしゃる方は見ないでね!

TRANSCRIPT

Page 1: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»�ï±�

��¼�Ö�Ï�²�

JavascriptのMVC開発について調べてみた~BACKBONE.JS~

未発表

13年5月26日日曜日

Page 2: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

ĔNáÄčĐ

éø¢¸dóČIâDå]SAVcWj@°ICrHkësgUvA

��{�µÝĄ]Sc]GHQ`ã@¦Hp`DãICseéø�k��{�]KXODBA

13年5月26日日曜日

Page 3: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

#*'w��u�Å^üFe

13年5月26日日曜日

Page 4: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

-�7*4:�¨]Sobč

13年5月26日日曜日

Page 5: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

èĉ��IOKOK�sYlEč

13年5月26日日曜日

Page 6: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

]k@ûÛIµJK`r^AA

Cs@ÑÏÔDW~�}AA

13年5月26日日曜日

Page 7: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

���uÇQWÀc«J�¤aÔDWZLAA

13年5月26日日曜日

Page 8: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

ÞÏcߦ]þąIÁ¶aĆE�24;����

���! ���ĎfKWVďäÍ£êòØu�çQ\GqgS�+663 ��999�3&.76&52�(20�

13年5月26日日曜日

Page 9: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Vv`^J׺]÷D×uéúQgQWč

13年5月26日日曜日

Page 11: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Mc×āi^�"�^DEõFÎu�E^SZJqÔLrpQD^üE�I

tHqgQWč

13年5月26日日曜日

Page 12: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

FZ�"�Z\ēē

13年5月26日日曜日

Page 13: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

�2)*/@",*9@�21642//*4cđ[a¿©u¦Lr�uDDgSč

13年5月26日日曜日

Page 14: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

�Fe@���uÇQW±ËuøìSrkcu�ZW^J

ボタン2 回押したよ!

13年5月26日日曜日

Page 15: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Controller

View Model

①画面のボタン押した

ボタン

2 回押したよ!

13年5月26日日曜日

Page 16: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Controller

View Model

①画面のボタン押した

②ボタン押されたに気づくViewは知らないかも

ボタン

2 回押したよ!

13年5月26日日曜日

Page 17: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Controller

View Model

①画面のボタン押した

②ボタン押されたに気づくViewは知らないかも

③モデルを操作する押した回数++

ボタン

2 回押したよ!

13年5月26日日曜日

Page 18: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Controller

View Model

①画面のボタン押した

②ボタン押されたに気づくViewは知らないかも

③モデルを操作する押した回数++

④モデル変更に気づくModelは気づいてないかも

ボタン

2 回押したよ!

13年5月26日日曜日

Page 19: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Controller

View Model

①画面のボタン押した

②ボタン押されたに気づくViewは知らないかも

③モデルを操作する押した回数++

④モデル変更に気づくModelは気づいてないかも

ボタン

2 回押したよ!

ボタン

3 回押したよ!

13年5月26日日曜日

Page 20: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

g@gtqK_DAA

13年5月26日日曜日

Page 21: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

]kDDM^ICrc]SA

13年5月26日日曜日

Page 22: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Controller

View Model

この3つ役割がはっきりしているからどこに何が記述されているのか分かりやすいのです!

D[kµ�®R{��a`rč�%�%�}�ċ«ćéI¹¡QmSVEč

13年5月26日日曜日

Page 23: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

FZč�}�ċ«ćéZ\ē

13年5月26日日曜日

Page 24: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

テスト駆動開発(TDD - Test Driven Development)とはテスト駆動開発は,小さなステップを繰り返してプログラムの設計と開発を行っていくソフトウェア開発手法です。テスト駆動開発は次の3ステップから構成されています。

• ステップ1:これから書く機能に対するテストを1つ書き,テストが失敗することを確認する( レッド )

• ステップ2:ステップ1のテストを通す最低限のコードを実装する( グリーン )• ステップ3:リファクタリングを行う( リファクタリング )リファクタリングを行ったあとは,再度ステップ1に戻り,次に作成する機能のテストを書いてテストを失敗させ,コードを書き,またリファクタリングを行い……というサイクルを回していきます。

î]dĀÐ¥ÙgUvAA]kĒÖa ��cx���ICroE]Sč

http://tddbc.doorkeeper.jp/events/3472

13年5月26日日曜日

Page 25: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

http://tddbc.doorkeeper.jp/events/3472

13年5月26日日曜日

Page 26: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

ÿuÆQgQ\�"�c¿©ukE�½ĀÐQgSč

13年5月26日日曜日

Page 27: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

Modelのお仕事 

� ����<§Âöª¾���í»?ï±

データの管理と計算をする係です。

もくもくと自分の仕事をこなします。描画など他の処理に関心がありません。➡誰にも依存しません!

Model

Controller

View Model

13年5月26日日曜日

Page 28: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

Viewの仕事� ����<§Âöª¾���í»?ï±

ユーザとの窓口です。ユーザ操作を受け付けます。Modelデータを分かりやすい形で表示します。

Modelの事に関心があってデータ変更を感知する事が出来ます。Modelに依存してます。

View

Controller

View Model

13年5月26日日曜日

Page 29: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

Controllerの仕事� ����<§Âöª¾���í»?ï±

仲介人です。Viewの操作イベントを感知してModelを操るのがお仕事です。

Viewの事もModelの事も良く知っている反面ViewとModelに依存してます。

Controller

Controller

View Model

13年5月26日日曜日

Page 30: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

]d�����������]Mv`>hWD`

ボタン2 回押したよ!

èĉu�Z\hgQnEč

13年5月26日日曜日

Page 31: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

Y`ha�����������d!1)*45(24*�-5�ÃĊ]SA

C^@�-�7*4:�H�$*362kÃù]Sč�EÒd�ôaDsgQnEBA

13年5月26日日曜日

Page 32: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

gTd�2)*/u�qgQnEč

13年5月26日日曜日

Page 33: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

�±c�2)*/d{�uñæQgSč

ボタン2 回押したよ!

13年5月26日日曜日

Page 34: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

// Backbone.Modelクラスをベースに拡張します。var CountDataModel= Backbone.Model.extend({ // モデルが管理するデータの初期値 defaults: { "count": 0 // :int 押した回数 }, // 押した回数取得 getCount: function (){ return this.get('count'); }, // 押した回数追加 countUp: function (){ var count= this.get('count'); count++; this.set('count', count); }});

Model

���³Ó

��� È

Ú¬ýð

13年5月26日日曜日

Page 35: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

ëp`DÌàI´D]Sb����HpĀÐQ\DJgS^

13年5月26日日曜日

Page 36: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Model

�������

// Backbone.Modelクラスをベースに拡張します。var CountDataModel= Backbone.Model.extend({ // モデルが管理するデータの初期値 defaults: { "count": 0 // :int 押した回数 }, // 押した回数取得 getCount: function (){ return this.get('count'); }, // 押した回数追加 countUp: function (){ var count= this.get('count'); count++; this.set('count', count); }});

Backbone.Model.extend({Backbone.Modelをベースにプロパティやメソッドを追加できます。機能を拡張(extend)してModelを作ります。

13年5月26日日曜日

Page 37: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Model

�������

// Backbone.Modelクラスをベースに拡張します。var CountDataModel= Backbone.Model.extend({ // モデルが管理するデータの初期値 defaults: { "count": 0 // :int 押した回数 }, // 押した回数取得 getCount: function (){ return this.get('count'); }, // 押した回数追加 countUp: function (){ var count= this.get('count'); count++; this.set('count', count); }});

defaults:Modelが持つデータの初期値を書きます。未設定の時に自動で値が設定されます。

13年5月26日日曜日

Page 38: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

Model

�������

// Backbone.Modelクラスをベースに拡張します。var CountDataModel= Backbone.Model.extend({ // モデルが管理するデータの初期値 defaults: { "count": 0 // :int 押した回数 }, // 押した回数取得 getCount: function (){ return this.get('count'); }, // 押した回数追加 countUp: function (){ var count= this.get('count'); count++; this.set('count', count); }});

Controller向けメソッドを準備外部Controllerからの操作を受け付けます。

13年5月26日日曜日

Page 39: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

Üa",*9^�21642//*4u�Z\hgQnEč

13年5月26日日曜日

Page 40: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

",*9d{�uñæQgSč

ボタン2 回押したよ!

13年5月26日日曜日

Page 41: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

var CountView = Backbone.View.extend({ el:'#count_View', initialize:function(){ this.listenTo(this.model,'change',this.render); }, render:function(){ var count=this.model.getCount(); this.$el.find('.countUpNo').text( count ); }, events:{ 'click button':'onClickButton' }, onClickButton:function(e){ this.model.countUp(); }

});

Controller

����

View

èĉÉè

Ê�­�

注意 !! Σ(=o=

Viewという名前ですがController機能も含んでます!

13年5月26日日曜日

Page 42: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

var CountView = Backbone.View.extend({ el:'#count_View', initialize:function(){ this.listenTo(this.model,'change',this.render); }, render:function(){ var count=this.model.getCount(); this.$el.find('.countUpNo').text( count ); }, events:{ 'click button':'onClickButton' }, onClickButton:function(e){ this.model.countUp(); }

});

Controller

����

View

èĉÉè

Ê�­�

Backbone.View.extendBackbone.Viewをベースにプロパティやメソッドを追加できます。機能を拡張 (extend) して作ります

13年5月26日日曜日

Page 43: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

var CountView = Backbone.View.extend({ el:'#count_View', initialize:function(){ this.listenTo(this.model,'change',this.render); }, render:function(){ var count=this.model.getCount(); this.$el.find('.countUpNo').text( count ); }, events:{ 'click button':'onClickButton' }, onClickButton:function(e){ this.model.countUp(); }

});

el:‘セレクタ’このViewが管理するHTMLのDOMを指定します。

<section id="count_View" class="drop-shadow lifted" > <div> <span class="countUpNo" >0</span>回押したよ! </div> <div> <button>押して!</button>

</div></section>

13年5月26日日曜日

Page 44: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

var CountView = Backbone.View.extend({ el:'#count_View', initialize:function(){ this.listenTo(this.model,'change',this.render); }, render:function(){ var count=this.model.getCount(); this.$el.find('.countUpNo').text( count ); }, events:{ 'click button':'onClickButton' }, onClickButton:function(e){ this.model.countUp(); }

});

initialize:function(){backboneの機能でインスタンス生成に呼ばれます。

listenTo(監視対象,‘イベント名’,動かすメソッド)backboneの機能でModelの変更を監視してます。

13年5月26日日曜日

Page 45: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

var CountView = Backbone.View.extend({ el:'#count_View', initialize:function(){ this.listenTo(this.model,'change',this.render); }, render:function(){ var count=this.model.getCount(); this.$('.countUpNo').text( count ); }, events:{ 'click button':'onClickButton' }, onClickButton:function(e){ this.model.countUp(); }

});

<section id="count_View" class="drop-shadow lifted" > <div> <span class="countUpNo" >0</span>回押したよ! </div> <div> <button>押して!</button>

</div></section>

Model変更時に起動する関数を書きます主に描画処理になります。this.$(‘セレクタ’)Viewが管理している範囲で検索して高速です。$(‘セレクタ’)=$el.find(‘セレクタ’)

13年5月26日日曜日

Page 46: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

var CountView = Backbone.View.extend({ el:'#count_View', initialize:function(){ this.listenTo(this.model,'change',this.render); }, render:function(){ var count=this.model.getCount(); this.$el.find('.countUpNo').text( count ); }, events:{ 'click button':'onClickButton' }, onClickButton:function(e){ this.model.countUp(); }

});

<section id="count_View" class="drop-shadow lifted" > <div> <span class="countUpNo" >0</span>回押したよ! </div> <div> <button>押して!</button>

</div></section>

events:{’イベント名 セレクタ名’:呼出メソッド}View内部で発生するイベントを監視します。

13年5月26日日曜日

Page 47: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±var CountView = Backbone.View.extend({ el:'#count_View', initialize:function(){ this.listenTo(this.model,'change',this.render); }, render:function(){ var count=this.model.getCount(); this.$el.find('.countUpNo').text( count ); }, events:{ 'click button':'onClickButton' }, onClickButton:function(e){ this.model.countUp(); }

});

Modelを操作するメソッドModelを操作します。(Controllerの役割)

13年5月26日日曜日

Page 48: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

ÕÀaMspcz�}uă«Sr¤æuÔJgS

13年5月26日日曜日

Page 49: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï±

// DOMの読み込み完了時// 最初に起動する処理( jQueryの機能 )$(function(){ var model = new CountDataModel(); var view = new CountView({model:model}); });

ModelとView生成画面が読込みの所でModelとViewを生成して完成です!

13年5月26日日曜日

Page 50: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

]d·Ĉc|���u«HQ\hgQnEč

http://jsdo.it/itoKami1123/xMqT/

13年5月26日日曜日

Page 51: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

g^jč

13年5月26日日曜日

Page 52: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

=�!�u�&8&�(4,36]y�y�ÔK`p�"�QWÎI~�}c¯ĂI \r

=�"�]ÔK^�2)*/a� ��cùòI¥\M`Dc]�}�QmSD

=�����������oOVEč

13年5月26日日曜日

Page 53: JavascriptのMVC開発について調べてみた 〜BACKBONE.JS〜

� ����<§Âöª¾���í»?ï�±

��]SčCqI^ENPDgQWč

13年5月26日日曜日