Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Hiroki Toyokawa
PDF, PPTX
42,164 views
はじめよう Backbone.js
2013年2月25日(月) に開催されました TechBuzz 第4回.js系開発技術勉強会で発表させていただきましたスライドになります。内容は Backbone.js の入門となっております。
Read more
65
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 72
2
/ 72
3
/ 72
4
/ 72
5
/ 72
6
/ 72
7
/ 72
8
/ 72
9
/ 72
10
/ 72
11
/ 72
12
/ 72
13
/ 72
14
/ 72
15
/ 72
16
/ 72
17
/ 72
18
/ 72
19
/ 72
20
/ 72
21
/ 72
22
/ 72
23
/ 72
24
/ 72
25
/ 72
26
/ 72
27
/ 72
28
/ 72
29
/ 72
30
/ 72
31
/ 72
32
/ 72
33
/ 72
34
/ 72
35
/ 72
36
/ 72
37
/ 72
38
/ 72
39
/ 72
40
/ 72
41
/ 72
42
/ 72
43
/ 72
44
/ 72
45
/ 72
46
/ 72
47
/ 72
48
/ 72
49
/ 72
50
/ 72
51
/ 72
52
/ 72
53
/ 72
54
/ 72
55
/ 72
56
/ 72
57
/ 72
58
/ 72
59
/ 72
60
/ 72
61
/ 72
62
/ 72
63
/ 72
64
/ 72
65
/ 72
66
/ 72
67
/ 72
68
/ 72
69
/ 72
70
/ 72
71
/ 72
72
/ 72
More Related Content
PDF
Backbone.js入門
by
AdvancedTechNight
PDF
JavaScriptことはじめ
by
Yuki Ishikawa
PDF
backbone.jsの使用例 その1
by
Makoto Haruyama
PDF
5分でわかる?Backbone.js ことはじめ
by
Kohei Kadowaki
PDF
Start React with Browserify
by
Muyuu Fujita
PPTX
忙しい人のためのBackbone.jsとAngular.js入門
by
Toshiaki Maki
PDF
Angular js or_backbonejs
by
Omasa Yusaku
PDF
Backbonejs @BuildInsiderOffline #1
by
daisuke shimizu
Backbone.js入門
by
AdvancedTechNight
JavaScriptことはじめ
by
Yuki Ishikawa
backbone.jsの使用例 その1
by
Makoto Haruyama
5分でわかる?Backbone.js ことはじめ
by
Kohei Kadowaki
Start React with Browserify
by
Muyuu Fujita
忙しい人のためのBackbone.jsとAngular.js入門
by
Toshiaki Maki
Angular js or_backbonejs
by
Omasa Yusaku
Backbonejs @BuildInsiderOffline #1
by
daisuke shimizu
What's hot
PDF
React.jsでクライアントサイドなWebアプリ入門
by
spring_raining
PPTX
React を導入したフロントエンド開発
by
daisuke-a-matsui
PPTX
2時間で学ぶjQuery
by
Shumpei Shiraishi
PDF
Scc2014 :jQueryの仕組みを完璧に理解する
by
Jun Futakawa
PDF
実践Backbone.Marionette 現場の悩みと解決まで
by
Ryuma Tsukano
PPTX
モテる JavaScript
by
Osamu Monoe
PDF
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
by
schoowebcampus
PDF
introduction to Marionette.js (jscafe14)
by
Ryuma Tsukano
PDF
JavaScriptユーティリティライブラリの紹介
by
Yusuke Hirao
PDF
JavaScriptで出来る、あんなことこんなこと
by
Mayu Kimura
PPTX
20140523 jQuery基礎 (HTML5ビギナーズ)
by
Daisuke Yamazaki
PDF
⑯jQueryをおぼえよう!その2
by
Nishida Kansuke
PDF
メディア芸術基礎 II jQuery入門
by
Atsushi Tadokoro
PDF
WebデザイナのためのjQuery入門。
by
Yossy Taka
PDF
クライアントサイドjavascript簡単紹介
by
しくみ製作所
KEY
Kawaz的jQuery入門
by
Kohki Miki
PDF
覚醒!JavaScript
by
Haraguchi Go
PDF
⑳CSSでアニメーション!その1
by
Nishida Kansuke
PDF
The master plan ofscaling a web application
by
Yusuke Wada
PDF
⑲jQueryをおぼえよう!その5
by
Nishida Kansuke
React.jsでクライアントサイドなWebアプリ入門
by
spring_raining
React を導入したフロントエンド開発
by
daisuke-a-matsui
2時間で学ぶjQuery
by
Shumpei Shiraishi
Scc2014 :jQueryの仕組みを完璧に理解する
by
Jun Futakawa
実践Backbone.Marionette 現場の悩みと解決まで
by
Ryuma Tsukano
モテる JavaScript
by
Osamu Monoe
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
by
schoowebcampus
introduction to Marionette.js (jscafe14)
by
Ryuma Tsukano
JavaScriptユーティリティライブラリの紹介
by
Yusuke Hirao
JavaScriptで出来る、あんなことこんなこと
by
Mayu Kimura
20140523 jQuery基礎 (HTML5ビギナーズ)
by
Daisuke Yamazaki
⑯jQueryをおぼえよう!その2
by
Nishida Kansuke
メディア芸術基礎 II jQuery入門
by
Atsushi Tadokoro
WebデザイナのためのjQuery入門。
by
Yossy Taka
クライアントサイドjavascript簡単紹介
by
しくみ製作所
Kawaz的jQuery入門
by
Kohki Miki
覚醒!JavaScript
by
Haraguchi Go
⑳CSSでアニメーション!その1
by
Nishida Kansuke
The master plan ofscaling a web application
by
Yusuke Wada
⑲jQueryをおぼえよう!その5
by
Nishida Kansuke
Similar to はじめよう Backbone.js
PDF
scala+liftで遊ぼう
by
youku
PPT
20130924 Picomon CRH勉強会
by
Yukihiro Kitazawa
PPTX
MVVM入門
by
Kazutoshi Urabe
PDF
Spine入門
by
AdvancedTechNight
PDF
全部入り!WGPで高速JavaScript+HML5体験
by
AdvancedTechNight
PDF
Study Intro Backbone
by
Gensei Kawasaki
PDF
Introduction for Browser Side MVC
by
Ryunosuke SATO
PDF
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
by
Akira Inoue
PPTX
Backbone.jsとSASSでモジュールをつくった話
by
Yosuke Doke
PDF
Knockout.js を利用したインタラクティブ web アプリケーション開発
by
Daizen Ikehara
KEY
Knockout
by
Kazuhiro Eguchi
PDF
Parse.comと始めるBackbone.js入門(jscafe7)
by
Ryuma Tsukano
PDF
Backbone.js
by
daisuke shimizu
PDF
Knockout を用いた Firefox OS アプリケーションの開発
by
Kentaro Iizuka
PDF
Knockout_エンジニア勉強会20131120
by
エンジニア勉強会 エスキュービズム
PDF
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
by
インフラジスティックス・ジャパン株式会社
PDF
Backbone model collection (jscafe 8)
by
Ryuma Tsukano
PDF
One night Vue.js
by
Masahiro Kyuden
PDF
実践Knockout
by
Kazuhiro Eguchi
PDF
大(中)規模Java script開発について
by
Yuki Tanaka
scala+liftで遊ぼう
by
youku
20130924 Picomon CRH勉強会
by
Yukihiro Kitazawa
MVVM入門
by
Kazutoshi Urabe
Spine入門
by
AdvancedTechNight
全部入り!WGPで高速JavaScript+HML5体験
by
AdvancedTechNight
Study Intro Backbone
by
Gensei Kawasaki
Introduction for Browser Side MVC
by
Ryunosuke SATO
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
by
Akira Inoue
Backbone.jsとSASSでモジュールをつくった話
by
Yosuke Doke
Knockout.js を利用したインタラクティブ web アプリケーション開発
by
Daizen Ikehara
Knockout
by
Kazuhiro Eguchi
Parse.comと始めるBackbone.js入門(jscafe7)
by
Ryuma Tsukano
Backbone.js
by
daisuke shimizu
Knockout を用いた Firefox OS アプリケーションの開発
by
Kentaro Iizuka
Knockout_エンジニア勉強会20131120
by
エンジニア勉強会 エスキュービズム
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
by
インフラジスティックス・ジャパン株式会社
Backbone model collection (jscafe 8)
by
Ryuma Tsukano
One night Vue.js
by
Masahiro Kyuden
実践Knockout
by
Kazuhiro Eguchi
大(中)規模Java script開発について
by
Yuki Tanaka
はじめよう Backbone.js
1.
はじめよう Backbone.js
TechBuzz 第4回.js系開発技術勉強会
2.
アウトライン 1.スピーカーについて 2.発表の目的 3.Backbone.js とは 4.デモとソースの解説
3.
はじめに自己紹介を
4.
スピーカーについて •豊川 弘樹 (25歳) •アプリケーションエンジニア •19歳のとき初めて
C++ でオセロゲームを作る •好きな言語は JavaScript, PHP, Obj-C •好きな動物はアルパカ •個人でも活動中@スタジオエサクレ
5.
最近つくったもの •iPhone アプリ •なぞるロックで大切な写真を保管 •2月いっぱいは無料です •http://studio-esakure.com/my-picture/
6.
発表の目的は?
7.
発表を聞いてできること •Backbone.js がどんなものか想像できる •Backbone.js のメリット・デメリットがわかる •実際に
Backbone.js を使ったソースを見る
8.
発表を聞いてもできないこと •Backbone.js を使った開発ができるようになる •Backbone.js 以外の
JS フレームワークとの比較 •イケてる Web サービスを作って異性にモテる
9.
Backbone.js のあらまし
10.
Backbone.js とは •JavaScript の
MVC フレームワーク •大規模開発で効果を発揮する •JavaScript フレームワークの中では知名度高い •Rails や CakePHP など一般的に MVC と呼ばれる ※ フレームワークとは大きく異なる ※ 正確には MVC2 •オブザーバ・パターン
11.
Backbone.js とは •JavaScript の
MVC フレームワーク •大規模開発で効果を発揮する 自分で調べてみ てね!! •JavaScript フレームワークの中では知名度高い •Rails や CakePHP など一般的に MVC と呼ばれる ※ フレームワークとは大きく異なる ※ 正確には MVC2 •オブザーバ・パターン
12.
Backbone.js とは •JavaScript の
MVC フレームワーク •大規模開発で効果を発揮する •JavaScript フレームワークの中では知名度高い •Rails や CakePHP など一般的に MVC と呼ばれる ※ フレームワークとは大きく異なる ※ 正確には MVC2 ? •オブザーバ・パターン
13.
オブザーバ・パターン “ •オブジェクトの状態を観察するような プログラムで使われるデザインパターンの一種
” ウィキペディア •JavaScript はユーザーのアクション (イベント) を 観察 (監視) するイベント駆動プログラミングが得意 •Backbone.js ではオブジェクトの状態変化も イベントとして監視する
14.
オブザーバ・パターン “ •オブジェクトの状態を観察するような プログラムで使われるデザインパターンの一種
” クリック時に ∼する ウィキペディア •JavaScript はユーザーのアクション (イベント) を 観察 (監視) するイベント駆動プログラミングが得意 •Backbone.js ではオブジェクトの状態変化も イベントとして監視する
15.
オブザーバ・パターン “ •オブジェクトの状態を観察するような プログラムで使われるデザインパターンの一種
” ウィキペディア •JavaScript はユーザーのアクションこれ大事!!を (イベント) 観察 (監視) するイベント駆動プログラミングが得意 •Backbone.js ではオブジェクトの状態変化も イベントとして監視する
16.
Backbone.js のオブジェクト •View ...
DOM の監視と操作 •Model ... データの取得・保存・更新・削除 •Collection ... Model の集合 •Router ... URL の監視 •History ... Router の履歴監視 •Controller というオブジェクトは存在しない
17.
Backbone.js のオブジェクト •View ...
DOM の監視と操作 •Model ... データの取得・保存・更新・削除 •Collection ... Model の集合 •Router ... URL の監視 これ大事!! •History ... Router の履歴監視 •Controller というオブジェクトは存在しない
18.
Backbone.js の MVC
M V C Model Router View Collection History
19.
Backbone.js の MVC
MV重要!! M V C Model Router View Collection History
20.
Collection
21.
\C じゃないよ...!!/
Collection
22.
ここまでのまとめ •Backbone.js は JavaScript
の MVC フレームワーク •一般的な MVC2 フレームワークとは違うらしい •イベント駆動のオブザーバ・パターン •Controller というオブジェクトはない •M と V が大事らしい
23.
もっと具体的なおはなし
24.
ある Web サービス Model
Collection View ユーザ
25.
Model
Collection \監視するぜ...!!/ View
26.
Model
Collection 監視 監視 View 監視
27.
Model
Collection \クリックされた...!!/ View クリック(イベント) この記事見 たいよ
28.
\待ってろ...!!/ Model
Collection 呼び出し \データくれ...!!/ View
29.
非同期通信 (Ajax) Model
Collection ・・・ View
30.
\取得OK...!!/
状態変化 Model Collection イベント \きたか...!!/ View
31.
Model
Collection \おまたせ...!!/ View 表示 ♪
32.
Collection
33.
\出番なし...!?/ Collection
34.
Collection 補足 •記事単体を扱うのが Model
なら 記事一覧など Model の集合を扱うのが Collection •基本的には Model と同じ •Model <-> Collection で相互にイベント監視
35.
ここまでのまとめ •View がユーザ, Model,
Collection のイベントを監視 •Model, Collection は非同期通信 (Ajax) で Web API とデータをやりとりする •データを取得 (更新) すると状態変化して イベントが発生する
36.
実際に使ってみました
37.
デモ •1週間の天気予報を JSONP で取得して表示
http://apps.alpacat.com/backbone_sample/
38.
HTML
39.
HTML (抜粋) <head>
<script type="text/javascript" src="lib/jquery/jquery-‐‑‒1.9.1.min.js"></script> <script type="text/javascript" src="lib/underscore/underscore-‐‑‒1.4.4.min.js"></script> <script type="text/javascript" src="lib/backbone/backbone-‐‑‒0.9.10.min.js"></script> </head> <body> <div id="content"> <ul id="nav-‐‑‒bar" class="nav nav-‐‑‒tabs" style="margin-‐‑‒bottom:10px;"> <li class="nav-‐‑‒items active"><a href="javascript:void(0);">東京</a></li> <li class="nav-‐‑‒items"><a href="javascript:void(0);">⼤大阪</a></li> </ul> <ul id="weekly"></ul> </div> <script type="text/javascript" src="lib/backbone/models/weather.js"></script> <script type="text/javascript" src="lib/backbone/views/content.js"></script> <script type="text/javascript"> var weather = new Weather(); var contentView = new ContentView({model:weather}); </script> </body>
40.
HTML (抜粋)
JS 読み込み <head> <script type="text/javascript" src="lib/jquery/jquery-‐‑‒1.9.1.min.js"></script> <script type="text/javascript" src="lib/underscore/underscore-‐‑‒1.4.4.min.js"></script> <script type="text/javascript" src="lib/backbone/backbone-‐‑‒0.9.10.min.js"></script> </head> <body> <div id="content"> <ul id="nav-‐‑‒bar" class="nav nav-‐‑‒tabs" style="margin-‐‑‒bottom:10px;"> <li class="nav-‐‑‒items active"><a href="javascript:void(0);">東京</a></li> <li class="nav-‐‑‒items"><a href="javascript:void(0);">⼤大阪</a></li> </ul> <ul id="weekly"></ul> </div> <script type="text/javascript" src="lib/backbone/models/weather.js"></script> <script type="text/javascript" src="lib/backbone/views/content.js"></script> <script type="text/javascript"> var weather = new Weather(); var contentView = new ContentView({model:weather}); </script> </body>
41.
HTML (抜粋) <head>
<script type="text/javascript" src="lib/jquery/jquery-‐‑‒1.9.1.min.js"></script> <script type="text/javascript" src="lib/underscore/underscore-‐‑‒1.4.4.min.js"></script> <script type="text/javascript" src="lib/backbone/backbone-‐‑‒0.9.10.min.js"></script> View で扱 </head> う <body> <div id="content"> <ul id="nav-‐‑‒bar" class="nav nav-‐‑‒tabs" style="margin-‐‑‒bottom:10px;"> <li class="nav-‐‑‒items active"><a href="javascript:void(0);">東京</a></li> <li class="nav-‐‑‒items"><a href="javascript:void(0);">⼤大阪</a></li> </ul> <ul id="weekly"></ul> </div> <script type="text/javascript" src="lib/backbone/models/weather.js"></script> <script type="text/javascript" src="lib/backbone/views/content.js"></script> <script type="text/javascript"> var weather = new Weather(); var contentView = new ContentView({model:weather}); </script> </body>
42.
HTML (抜粋) <head>
<script type="text/javascript" src="lib/jquery/jquery-‐‑‒1.9.1.min.js"></script> <script type="text/javascript" src="lib/underscore/underscore-‐‑‒1.4.4.min.js"></script> <script type="text/javascript" src="lib/backbone/backbone-‐‑‒0.9.10.min.js"></script> </head> <body> <div id="content"> <ul id="nav-‐‑‒bar" class="nav nav-‐‑‒tabs" style="margin-‐‑‒bottom:10px;"> <li class="nav-‐‑‒items active"><a href="javascript:void(0);">東京</a></li> <li class="nav-‐‑‒items"><a href="javascript:void(0);">⼤大阪</a></li> </ul> オブジェクト <ul id="weekly"></ul> 定義読み込み </div> <script type="text/javascript" src="lib/backbone/models/weather.js"></script> <script type="text/javascript" src="lib/backbone/views/content.js"></script> <script type="text/javascript"> var weather = new Weather(); var contentView = new ContentView({model:weather}); </script> </body>
43.
HTML (抜粋) <head>
<script type="text/javascript" src="lib/jquery/jquery-‐‑‒1.9.1.min.js"></script> <script type="text/javascript" src="lib/underscore/underscore-‐‑‒1.4.4.min.js"></script> <script type="text/javascript" src="lib/backbone/backbone-‐‑‒0.9.10.min.js"></script> </head> <body> <div id="content"> <ul id="nav-‐‑‒bar" class="nav nav-‐‑‒tabs" style="margin-‐‑‒bottom:10px;"> <li class="nav-‐‑‒items active"><a href="javascript:void(0);">東京</a></li> <li class="nav-‐‑‒items"><a href="javascript:void(0);">⼤大阪</a></li> </ul> <ul id="weekly"></ul> </div> 実体化 <script type="text/javascript" src="lib/backbone/models/weather.js"></script> <script type="text/javascript" src="lib/backbone/views/content.js"></script> <script type="text/javascript"> var weather = new Weather(); var contentView = new ContentView({model:weather}); </script> </body>
44.
HTML (抜粋) <head>
<script type="text/javascript" src="lib/jquery/jquery-‐‑‒1.9.1.min.js"></script> <script type="text/javascript" src="lib/underscore/underscore-‐‑‒1.4.4.min.js"></script> <script type="text/javascript" src="lib/backbone/backbone-‐‑‒0.9.10.min.js"></script> </head> <body> <div id="content"> <ul id="nav-‐‑‒bar" class="nav nav-‐‑‒tabs" style="margin-‐‑‒bottom:10px;"> <li class="nav-‐‑‒items active"><a href="javascript:void(0);">東京</a></li> <li class="nav-‐‑‒items"><a href="javascript:void(0);">⼤大阪</a></li> </ul> <ul id="weekly"></ul> </div> <script type="text/javascript" src="lib/backbone/models/weather.js"></script> Model 実体 化 <script type="text/javascript" src="lib/backbone/views/content.js"></script> <script type="text/javascript"> var weather = new Weather(); var contentView = new ContentView({model:weather}); </script> </body>
45.
HTML (抜粋) <head>
<script type="text/javascript" src="lib/jquery/jquery-‐‑‒1.9.1.min.js"></script> <script type="text/javascript" src="lib/underscore/underscore-‐‑‒1.4.4.min.js"></script> <script type="text/javascript" src="lib/backbone/backbone-‐‑‒0.9.10.min.js"></script> </head> <body> <div id="content"> <ul id="nav-‐‑‒bar" class="nav nav-‐‑‒tabs" style="margin-‐‑‒bottom:10px;"> <li class="nav-‐‑‒items active"><a href="javascript:void(0);">東京</a></li> <li class="nav-‐‑‒items"><a href="javascript:void(0);">⼤大阪</a></li> </ul> <ul id="weekly"></ul> </div> <script type="text/javascript" src="lib/backbone/models/weather.js"></script> View 実体 <script type="text/javascript" src="lib/backbone/views/content.js"></script> <script type="text/javascript"> 化 var weather = new Weather(); var contentView = new ContentView({model:weather}); </script> </body>
46.
HTML (抜粋) <head>
<script type="text/javascript" src="lib/jquery/jquery-‐‑‒1.9.1.min.js"></script> <script type="text/javascript" src="lib/underscore/underscore-‐‑‒1.4.4.min.js"></script> <script type="text/javascript" src="lib/backbone/backbone-‐‑‒0.9.10.min.js"></script> </head> <body> <div id="content"> <ul id="nav-‐‑‒bar" class="nav nav-‐‑‒tabs" style="margin-‐‑‒bottom:10px;"> <li class="nav-‐‑‒items active"><a href="javascript:void(0);">東京</a></li> <li class="nav-‐‑‒items"><a href="javascript:void(0);">⼤大阪</a></li> </ul> <ul id="weekly"></ul> </div> 監視するモデル のセット <script type="text/javascript" src="lib/backbone/models/weather.js"></script> View 実体 <script type="text/javascript" src="lib/backbone/views/content.js"></script> <script type="text/javascript"> 化 var weather = new Weather(); var contentView = new ContentView({model:weather}); </script> </body>
47.
Model
48.
Backbone.Model.Weather var Weather =
Backbone.Model.extend({ defaults: { "pref": 13 }, url: function(){ return "pipe.php?pref=" + this.get("pref"); }, sync: function(method, model, options){ /* 省省略略: JSONP 取得⽤用に Backbone.sync をオーバーライド */ Backbone.sync(method, model, params); }, parse: function(res){ var parsed; var pref = this.get("pref"); /* 省省略略: 都道府県に合わせてデータ整形 */ return parsed; } });
49.
Backbone.Model.Weather
初期値セッ ト var Weather = Backbone.Model.extend({ defaults: { "pref": 13 }, url: function(){ return "pipe.php?pref=" + this.get("pref"); }, sync: function(method, model, options){ /* 省省略略: JSONP 取得⽤用に Backbone.sync をオーバーライド */ Backbone.sync(method, model, params); }, parse: function(res){ var parsed; var pref = this.get("pref"); /* 省省略略: 都道府県に合わせてデータ整形 */ return parsed; } });
50.
Backbone.Model.Weather var Weather =
Backbone.Model.extend({ defaults: { "pref": 13 API の UR }, L url: function(){ return "pipe.php?pref=" + this.get("pref"); }, sync: function(method, model, options){ /* 省省略略: JSONP 取得⽤用に Backbone.sync をオーバーライド */ Backbone.sync(method, model, params); }, parse: function(res){ var parsed; var pref = this.get("pref"); /* 省省略略: 都道府県に合わせてデータ整形 */ return parsed; } });
51.
Backbone.Model.Weather var Weather =
Backbone.Model.extend({ defaults: { "pref": 13 }, url: function(){ データ取得用 メソッド return "pipe.php?pref=" + this.get("pref"); }, sync: function(method, model, options){ /* 省省略略: JSONP 取得⽤用に Backbone.sync をオーバーライド */ Backbone.sync(method, model, params); }, parse: function(res){ var parsed; var pref = this.get("pref"); /* 省省略略: 都道府県に合わせてデータ整形 */ return parsed; } });
52.
Backbone.Model.Weather var Weather =
Backbone.Model.extend({ defaults: { "pref": 13 }, url: function(){ return "pipe.php?pref=" + this.get("pref"); }, sync: function(method, model, options){ データ取得後 /* 省省略略: JSONP 取得⽤用に Backbone.sync をオーバーライド */ に呼ばれる Backbone.sync(method, model, params); }, parse: function(res){ var parsed; var pref = this.get("pref"); /* 省省略略: 都道府県に合わせてデータ整形 */ return parsed; } });
53.
Backbone.Model.Weather var Weather =
Backbone.Model.extend({ defaults: { "pref": 13 }, url: function(){ return したデ ータ return "pipe.php?pref=" + this.get("pref"); が属 性になる }, sync: function(method, model, options){ データ取得後 /* 省省略略: JSONP 取得⽤用に Backbone.sync をオーバーライド */ に呼ばれる Backbone.sync(method, model, params); }, parse: function(res){ var parsed; var pref = this.get("pref"); /* 省省略略: 都道府県に合わせてデータ整形 */ return parsed; } });
54.
View
55.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
56.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", 対象の要素 events: { "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
57.
Backbone.View.ContentView
監視イベントと コールバック var ContentView = Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
58.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { 初期化 "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
59.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" Model 監視 }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
60.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" }, データ取得 initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
61.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { オリジナルのコ ールバック this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
62.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, モデル clickedNavItems: function(e) { に属性をセッ ト /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
63.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ データ取得 if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
64.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } 描画 /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
65.
Backbone.View.ContentView var ContentView =
Backbone.View.extend({ el: "div#content", events: { "click .nav-‐‑‒items": "clickedNavItems" }, initialize: function() { this.listenTo(this.model, "change", this.render); this.model.fetch(); }, clickedNavItems: function(e) { /* 省省略略: 東京、⼤大阪のどちらがクリックされたかを判断 */ if (pref && pref != this.model.get("pref")) { this.model.set({pref: pref}, {silent: true}); this.model.fetch(); } モデルの属性( データ)を取得 /* 省省略略: ナビバーボタンの選択、⾮非選択スタイルをセット */ }, render: function() { var weekly = this.model.get("info"); /* 省省略略: Model から受け取った情報に基づき HTML を描画 */ } });
66.
デモのソースは GitHub にあります https://github.com/otoyo0122/backbone_sample
\Apache 上で動かしてみてね!!/
67.
\すごいぞ Backbone.js !!/
Collection
68.
ヒソヒソ...
(この規模なら使う必要なくね?) Collection ヒソヒソ... (普通に書いた方が早い気が...)
69.
Backbone.js とは
これ大事!! •JavaScript の MVC フレームワーク •大規模開発で効果を発揮する •JavaScript フレームワークの中では知名度高い •Rails や CakePHP など一般的に MVC と呼ばれる ※ フレームワークとは大きく異なる ※ 正確には MVC2 •オブザーバ・パターン
70.
\えっ!?/ Collection
71.
fin.
72.
参考文献 •Backbone.js http://backbonejs.org/ •Backbone.js
入門 http://qiita.com/items/16b799d0ec0a0ae3f78e
Download