Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Getting start with knockout.js
Report
Akio Ishida
Follow
Programmer
Jul. 28, 2013
•
0 likes
1 likes
×
Be the first to like this
Show More
•
2,319 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
AngularJS2でつまづいたこと
Takehiro Takahashi
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
クライアントサイドjavascript簡単紹介
しくみ製作所
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
schoowebcampus
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
TypeScriptへの入口
Sunao Tomita
大規模なJavaScript開発の話
terurou
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
1
of
19
Top clipped slide
Getting start with knockout.js
Jul. 28, 2013
•
0 likes
1 likes
×
Be the first to like this
Show More
•
2,319 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Akio Ishida
Follow
Programmer
Advertisement
Advertisement
Advertisement
Recommended
JavaScriptトレンド総括(2014)
Tetsuharu OHZEKI
23.5K views
•
50 slides
PHPでWebSocketを実装してみてわかったこと
ksimoji
12.3K views
•
33 slides
JavaScriptで出来る、あんなことこんなこと
Mayu Kimura
4.6K views
•
26 slides
JavaScript 研修
Yuki Ishikawa
13.6K views
•
93 slides
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
5K views
•
13 slides
Concurrent Programming in JavaScript
yjono Seino
137 views
•
21 slides
More Related Content
Slideshows for you
(20)
AngularJS2でつまづいたこと
Takehiro Takahashi
•
4.5K views
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Kohei Asai
•
16.3K views
クライアントサイドjavascript簡単紹介
しくみ製作所
•
2.8K views
Webデザインの幅を広げる、jQuery【コードを記述する】 先生:保坂 庸介
schoowebcampus
•
4.8K views
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
•
39.1K views
TypeScriptへの入口
Sunao Tomita
•
22.2K views
大規模なJavaScript開発の話
terurou
•
12K views
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
•
18.9K views
MF GeeksNight pplogの話
Naoto Koshikawa
•
3.8K views
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
•
3K views
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
•
38.1K views
TypeScript超入門
Narami Kiyokura
•
22.9K views
Non blocking and asynchronous
Norio Kobota
•
2.6K views
八王子
Kazutake Hiramatsu
•
435 views
はじめよう TypeScript - 入門から実践まで - 素の JavaScript とはさようなら!
Jun-ichi Sakamoto
•
15.8K views
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
civic Sasaki
•
7.2K views
モダンJavaScript環境構築一歩目
大樹 小倉
•
16.4K views
ビルド職人の朝は早い
Masashi MATSUI
•
3.7K views
JSオジサン#1で飛び込みLTしてきた
Tetsuharu OHZEKI
•
2K views
片手間JS on Rails
Ryunosuke SATO
•
6.3K views
Similar to Getting start with knockout.js
(20)
なぜ人は必死でjQueryを捨てようとしているのか
Yoichi Toyota
•
80.1K views
2012/11/03Hiroshima.rb
Ueki Kouji
•
196 views
JavaScriptの変遷/TypeScriptとは.pptx
KSato2
•
20 views
フロントエンド開発入門(React).pdf
KSato2
•
44 views
TypeScriptをオススメする理由
Yusuke Naka
•
13.3K views
⑮jQueryをおぼえよう!その1
Nishida Kansuke
•
11.2K views
PHP フィールドインジェクションに挑戦する PHP勉強会2014
Yuuki Takezawa
•
1.3K views
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
pandeiro245
•
2.1K views
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
•
17K views
JavaScriptトレンド総括(2014)
VOYAGE GROUP
•
1.5K views
jOOQの紹介
Takuya Kitamura
•
13.1K views
2010-10-2 FxUG 名古屋勉強会 HTML5で遊んでみよう
Mori Shingo
•
646 views
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
Takahiro Moteki
•
2.4K views
新・ReVIEWパーサについて
masayoshi takahashi
•
8.1K views
YAPC::Asia Tokyo 2014 前夜祭 pplog by @ppworks
Naoto Koshikawa
•
46K views
NoNoSQL
Yuichiro Ebihara
•
755 views
React+fluxを導入した話
Yuki Ishikawa
•
4.5K views
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
•
12.3K views
Web制作勉強会 #2
Moto Yan
•
613 views
Swiftの実際ダメな所
S_Shimotori
•
876 views
Advertisement
More from Akio Ishida
(12)
Prophecyを使ったユニットテスト
Akio Ishida
•
3.8K views
よりよいPHPUnitの実行方法を求めて
Akio Ishida
•
2.4K views
phpspecで学ぶLondon School TDD
Akio Ishida
•
7.5K views
PostgreSQLの範囲型と排他制約
Akio Ishida
•
3.8K views
XIDを周回させてみよう
Akio Ishida
•
7.6K views
Local php-100828 2
Akio Ishida
•
977 views
Rubysapporo Stringsearch
Akio Ishida
•
804 views
Ruby Postgres 2009
Akio Ishida
•
2.1K views
使いこなそうGUC
Akio Ishida
•
2.6K views
textsearch_jaで全文検索
Akio Ishida
•
3.1K views
PostgreSQLで学ぶBoyer-Moore-Horspoolアルゴリズム
Akio Ishida
•
1.5K views
Ruby Postgres
Akio Ishida
•
1.4K views
Getting start with knockout.js
Getting Started With Knockout.js 2013/07/27
Sapporo.js @iakio
• 石田朗雄 • 普段は主にPHPを書いてます •
Knockout.jsは2011年にちょっと使ってみた程度
今日話さないこと • MVCとかMVVMってなに? • 説明できません •
リアクティブプログラミングってなに? • 興味あるかたは調べてみましょう
Knockout.jsとは • Backbone.js, Ember.js,
Angular.jsの次くらいに流 行っているのかも • Ember.js, Angular.jsと比べるとかなり小さい • Knockout.jsはフレームワークではなくライブラ リだ(ズギャーン • たぶん最も特徴的なのはDependency Tracking
Knockout.jsのはじめかた • 公式のチュートリアルを2つくらいやる • APIを3,4個学ぶ •
Bindingを5から10個くらい学ぶ • とりあえずそれくらい
それでなにをやりたいの • 本来書きたいことに集中したい • 変更の頻度が違うものは分けたい
理想 • JavaScriptの状態(プロパティ)が変更されたら、 自動的に見た目も変更されるといいなあ • ブラウザ上でテキストボックスやドロップダウ ンを操作すると自動的にJavaScriptの状態に反 映されるといいなあ
Getter/Setter {{price}} this.set(‘price’, 100); this.get(‘price’);
Ember.js <p data-bind=“text:price”> </p>又は <!-- ko text: price --> <!-- /ko --> this.price = ko.observable(); this.price(100); this.price(); Knockout.js {{price}} $scope.price = 100; $scope.price; Angular.js
DEMO
Dependency Tracking Total =
price * quantity
jQuery イベントが発生したら、PriceとQuantityを取得し てTotalを書き換える $(“#quantity,#price”).on(“change”, function ()
{ $(“#total”).text( $(“#price”).text() * $(“#quantity”).text(); ); }); jQuery
Totalはpriceとquantityから求められる total: function ()
{ return this.get(‘price’) * this.get(‘quantity’); }.property(‘price’, ‘quantity’); Ember.js this.total = ko.computed(function () { return this.price() * this.quantity(); }, this); Knockout.js
すこしだけ仕組みについて • 定義された時点で一回呼んでみる • その間に呼ばれたGetterに依存している •
total()「今からトータル計算しまーす」 • price()「ん?トータル計算中に呼ばれた!」 • quantity()「ん?トータル計算中に呼ばれた!」 • price(100)「よーしtotal()再計算しちゃうぞー」 this.total = ko.computed(function () { return this.price() * this.quantity(); }, this); Knockout.js
こういう場合は • 初回にflagが偽だとpriceとquantityが呼ばれな いので依存関係が記録されない this.total =
ko.computed(function () { if (this.flag) { return this.price() * this.quantity(); } else { … } }, this); Knockout.js
こうする • 初回、priceとquantityの依存関係が記録されないが、 flagは記録されている • flagが真になるとtotalが呼ばれ、priceとquantityの 依存関係が記録される this.flag
= ko.observable(); this.total = ko.computed(function () { if (this.flag()) { return this.price() * this.quantity(); } else { … } }, this); Knockout.js
考え方を変える • 例えばページャやフィルタ • 「次へ」を押されたら、ページ番号を+1する •
ページ番号に依存して • 現ページに表示するアイテムが変わる • 「前へ」「次へ」ボタンを表示するかが変わる • その他色々が自動的に変わる
良いところ • 小さい。覚えることが少ない • ViewModelは単なるObject •
ModelとかControllerとかいう言葉がでてこない • セレクタから解放される • 本来書きたかったことに集中できる • Tutorialがよくできている
注意点 • 全部入りではない • AjaxしたければjQueryを使う •
Routerが必要であればsammy.jsを使う • その他Pluginなどあるが、そこまでやるか • 多対一のような複雑なdependency • メソッド重複して呼ばれないよう注意 • ViewModelの肥大化 • 使いどころを選ぶ • SEOってなんだったっけ • Progressive Enhancement?
Resources • http://knockoutjs.com • http://knockmeout.net •
http://blog.stevensanderson.com
Advertisement