53
KnockoutJS Hands-On Visual Studio Knockoutjs 勉勉勉勉勉勉 勉勉勉勉勉 JavaScript 勉勉勉勉勉勉 勉勉勉勉勉勉勉勉JavaScript 勉勉勉勉勉勉勉勉勉 MVVM 勉勉勉勉勉勉勉勉勉勉勉勉勉勉勉勉勉勉 KnockoutJS 勉勉勉勉勉Sencha Ext JS 勉 MVVM 勉勉勉勉勉1 http :// atnd.org/events/51279 勉勉

20140712 knockoutjs-hands-on-in-osaka

Embed Size (px)

DESCRIPTION

20140712 knockoutjs-hands-on-in-osaka Knockout + JavaScript + TypeScript

Citation preview

Page 1: 20140712 knockoutjs-hands-on-in-osaka

KnockoutJSHands-On Visual Studio

Knockoutjs 勉強会の内容初心者向け JavaScript 入門からテラ・コーディングまで! JavaScriptフレームワークの主流、 MVVM アーキテクチャパターンを採用している KnockoutJS を堪能する! Sencha Ext JS の MVVM もやります!

1

http://atnd.org/events/51279 大阪

Page 3: 20140712 knockoutjs-hands-on-in-osaka

自己紹介 名前 : 野呂清二 Twitter : @seinoro Facebook : seiji.noro 言語 :C#, JavaScript (C++, Java)

Microsoft MVP for Office365 <

http://mvp.microsoft.com/ja-jp/mvp/Seiji%20Noro-5000492>

3

Page 4: 20140712 knockoutjs-hands-on-in-osaka

参考文献

Knockout handson http://

www.slideshare.net/tanago3/knockout-handson

Knockout 日本語ドキュメント http://kojs.sukobuto.com/

4

Page 5: 20140712 knockoutjs-hands-on-in-osaka

ハンズオンの流れ

環境のセットアップ

足し算アプリを作る

TODO アプリを作る

TypeScript+knockoutJS

5

Page 6: 20140712 knockoutjs-hands-on-in-osaka

環境のセットアップ6

Setup

Page 7: 20140712 knockoutjs-hands-on-in-osaka

7

Setup

Page 8: 20140712 knockoutjs-hands-on-in-osaka

Visual Studio のインストール

Visual Studio 2013 90 日間の無償評価版 http://www.visualstudio.com/ja-jp/downloads/download-v

isual-studio-vs.aspx Microsoft Visual Studio Professional 2013 Update 2

Microsoft Visual Studio Express 2013 for Web でも可能と思われる。

8

Setup

Page 9: 20140712 knockoutjs-hands-on-in-osaka

① ファイル / 新規作成 / プロジェクト②Visual C#/Web/ASP.NET Web アプリケーション③MVC/④ 認証なし

9

Setup

新規プロジェクト作成

クラウド内のホストチェック外す

Page 10: 20140712 knockoutjs-hands-on-in-osaka

KnockoutJS インストール① ツール /Nuget パッケージマネジャー / ソリューションの NuGet パッケージの管理②Knockoutjs インストール

10

Setup

オンライン KnockoutJS

Page 11: 20140712 knockoutjs-hands-on-in-osaka

確認以下のように Knockout.js が組み込まれています。

11

Setup

Scripts フォルダー

Page 12: 20140712 knockoutjs-hands-on-in-osaka

足し算アプリを作る12

足し算

Page 13: 20140712 knockoutjs-hands-on-in-osaka

ソースプログラム

Knockout.js で足し算アプリ (Visual Studio2013) http://tech.exceedone.co.jp/javascript/visualstudio-2013-m

vc5-with-twitterbootstrap-caluculate/

13

足し算

Page 14: 20140712 knockoutjs-hands-on-in-osaka

14 HTML (/Views/Home/index.cshtml)

足し算

Page 15: 20140712 knockoutjs-hands-on-in-osaka

15 JavaScript(/Scripts/test.js)

足し算

Page 16: 20140712 knockoutjs-hands-on-in-osaka

デバック (F5) で動かしてみる。※ F9 でブレイクポイント

足し算

16

Page 17: 20140712 knockoutjs-hands-on-in-osaka

実行結果足し算

17

Page 18: 20140712 knockoutjs-hands-on-in-osaka

ko.observable()値の変更を監視します・主に UI と同期するために使用

※ko.observableArray() は後述

ko.observable

足し算

18

Page 19: 20140712 knockoutjs-hands-on-in-osaka

ko.computed(f)利用している ko.observable の値が変わると実行される

ko.computed 内で利用している ko.observable

ko.computed

足し算

19

Page 20: 20140712 knockoutjs-hands-on-in-osaka

data-bind

“value” binding は <input>, <select>, <textarea> のようなフォーム要素に使用する。

“text” binding は <span>, <em> のような表示するための要素に使用する。※ 基本的に何でもイケル。 number, string 以外の値をいれたら toString した値が表示される

“visible”, “style”, “attr”, “html”, “css”, “custom” などの binding がある

足し算

20

Page 21: 20140712 knockoutjs-hands-on-in-osaka

ko.applyBindings(vm,node)

足し算

21

Page 22: 20140712 knockoutjs-hands-on-in-osaka

TODO アプリを作る22

Todo

Page 23: 20140712 knockoutjs-hands-on-in-osaka

ソースプログラム

Knockout.js で Todo アプリ (Visual Studio2013 http://tech.exceedone.co.jp/javascript/visualstudio-2013-m

vc5-with-twitterbootstrap-todos/

Todo

23

Page 24: 20140712 knockoutjs-hands-on-in-osaka

24

HTML (/Views/Home/index.cshtml)

Todo

Page 25: 20140712 knockoutjs-hands-on-in-osaka

25 JavaScript(/Scripts/test.js)

Todo

Page 26: 20140712 knockoutjs-hands-on-in-osaka

実行結果Todo

26

Page 27: 20140712 knockoutjs-hands-on-in-osaka

27 Add ボタンのアクション追加Todo

Index.cshtml

test.js

Page 28: 20140712 knockoutjs-hands-on-in-osaka

実行結果28

Todo

Page 29: 20140712 knockoutjs-hands-on-in-osaka

29 TaskList に追加するTodo

test.js

Page 30: 20140712 knockoutjs-hands-on-in-osaka

TaskList に追加する30

Index.cshtml

foreach バインディング

Todo

Page 31: 20140712 knockoutjs-hands-on-in-osaka

実行結果31

Todo

Page 32: 20140712 knockoutjs-hands-on-in-osaka

32 delete ボタンのアクション追加

Todo

test.js

Page 33: 20140712 knockoutjs-hands-on-in-osaka

delete ボタンのアクション追加

33

Index.cshtml

$parent: 親 ViewModel オブジェクト

その他にも$root: 最上位のコンテキストの ViewModel オブジェクト$data: 現在のコンテキストの ViewModel オブジェクト$index: foreach バインディング内で使用できる配列のインデックス

Todo

Page 34: 20140712 knockoutjs-hands-on-in-osaka

TypeScript+KnockoutJS34

TypeScript

Page 35: 20140712 knockoutjs-hands-on-in-osaka

ソースプログラム

TypeScript+KnockoutJS アプリ (Visual Studio2013) http://tech.exceedone.co.jp/javascript/typescript-knockoutj

s-visual-studio2013/

35

TypeScript

Page 36: 20140712 knockoutjs-hands-on-in-osaka

Knockout.js 日本語ドキュメントを参考につくってみましょう。

36

http://kojs.sukobuto.com/tips/withTypeScript

TypeScript

Page 38: 20140712 knockoutjs-hands-on-in-osaka

Web Essentials インストール38

① ツール - 拡張機能と更新プログラム

TypeScript

Page 39: 20140712 knockoutjs-hands-on-in-osaka

TypeScript と JavaScript が同時に確認できます。

39

TypeScript JavaScript

TypeScript

Page 40: 20140712 knockoutjs-hands-on-in-osaka

① ファイル / 新規作成 / プロジェクト②Visual C#/TypeScript/TypeScipt を使用した HTML アプリケーショ

40 新規プロジェクト作成TypeScript

Page 41: 20140712 knockoutjs-hands-on-in-osaka

実行 (F5) するとサンプルが起動する。

41

もちろんデバックもできます。

typescript definitelytypescript definitely

TypeScript

Page 42: 20140712 knockoutjs-hands-on-in-osaka

KnockoutJS 等をインストール

NuGet パッケージ管理 Knockoutjs

GitHub knockout-es5

https://github.com/SteveSanderson/knockout-es5

右側の Download ZIP/ dist の中のファイルを追加

42

TypeScript

Page 43: 20140712 knockoutjs-hands-on-in-osaka

typescript definitely をインストール (t.ds)

knockout.es5.TypeScript.DefinitelyTyped 依存  knockout.TypeScript.DefinitelyTyped

43

TypeScript

Page 44: 20140712 knockoutjs-hands-on-in-osaka

Index.html にソースを張る。44

JS はドラック&ドロップできます。

TypeScript

Page 45: 20140712 knockoutjs-hands-on-in-osaka

app.ts を編集する45

d.ts はドラック&ドロップできます。

TypeScript

Page 46: 20140712 knockoutjs-hands-on-in-osaka

デバック (F5) してみる46

TypeScript

Page 47: 20140712 knockoutjs-hands-on-in-osaka

時間が余ったら47

Page 48: 20140712 knockoutjs-hands-on-in-osaka

時間が余ったら くつろぐ、 knockout 等で回りの人と談話する。 周りでできてない人の Help

他の課題(準備できていたら)

以下をみてみるとか SPA(Single Page Application) for knockout.js +

TwitterBootstrap + Sammy.js + SQL Azure + Visual Studio2013

http://tech.exceedone.co.jp/javascript/visualstudio-2013-mvc5-with-twitterbootstrap-knockout-spa/

48

Page 49: 20140712 knockoutjs-hands-on-in-osaka

補足デバックについて49

Page 50: 20140712 knockoutjs-hands-on-in-osaka

Internet ExplorerGoogle Chrome はブレイクポイントはとまりません。

50

Page 51: 20140712 knockoutjs-hands-on-in-osaka

.cshtml でのデバックcshtml では、ブレイクポイントはとまりませんのでdebugger と入力します。

51

Page 52: 20140712 knockoutjs-hands-on-in-osaka

.js でのデバック.js ブレイクポイントはとまります。

52

Page 53: 20140712 knockoutjs-hands-on-in-osaka

ありがとうございました!!53