22
Sencha UG @ 大阪

Ext JS version 5 を始めよう

  • Upload
    -

  • View
    599

  • Download
    3

Embed Size (px)

DESCRIPTION

Sencha UG 第21回 勉強会@大阪 での発表資料です。 Sencha Ext JS は、HTML5ベースのJavaScriptフレームワークで、アプリケーションの構造部分から、豊富なウィジェット、開発ツールとすべてがオールインワンで揃っている唯一のフレームワークです。 Sencha Ext JS 5 では、MVVM アーキテクチャが導入され、タッチデバイスに対応しました。今回はそんな Ext JS の魅力を皆さんにお伝えしたいと思います。

Citation preview

Page 1: Ext JS version 5 を始めよう

Sencha UG @大阪

Page 2: Ext JS version 5 を始めよう

自己紹介• 中村久司 • Sencha UG Co-Organizer • 株式会社ゼノフィ関西事業所 事業所長 • Sencha オフィシャルトレーナー • 著書 • Sencha Touch 2 実践開発ガイド

@martini3oz

Page 3: Ext JS version 5 を始めよう
Page 4: Ext JS version 5 を始めよう

2010Sencha Touch 1.0

2012Sencha Touch 2.0

Page 5: Ext JS version 5 を始めよう

タッチデバイスのサポート• Ext JS 4 までは、ブラウザ用フレームワークと言うことで、タッチデバイスのサポートはなかった。

• Ext JS 4 のアプリをタブレットで動かすことはできたが、一部おかしいところとか

操作できないところがあった。

Page 6: Ext JS version 5 を始めよう

イベント正規化• タッチイベント/ポインターイベント/マウスイベント • mousedown リスナーをセットすると • タッチをサポートする場合は touchstart • ポインターをサポートする場合は pointerdown • 自動的に変換してくれる

Page 7: Ext JS version 5 を始めよう

ジェスチャー• 複雑なジェスチャーイベントも標準でサポート • drag、 swipe、 longpress、 • pinch、 rotate、 tap • someElement.on(‘swipe’, …) と簡単に使える

Page 8: Ext JS version 5 を始めよう

代わりがないイベント• mouseover, mouseenter, mouseout, mouseleave • タッチデバイスではこれらに替わるものはないので、使っている場合は、なんらかの代替策を考える

• Grid のヘッダーメニュー • PCのブラウザ → ヘッダへのmouseoverで表示される • タブレット → ヘッダの longpress で表示される

Page 9: Ext JS version 5 を始めよう

MVVM アーキテクチャ• MVC から MVVM へ • SPA では、保持している値と画面表示 (DOM) の同期をとるためのコードであふれることがある

• その対策として考えられたのがデータバインディングであり、MVVM アーキテクチャ

• ViewModel による View への双方向データバインディング

Page 10: Ext JS version 5 を始めよう

ViewModel• View の viewModel コンフィグで指定する • ViewModel が保持するデータが変更されたら、それが自動的に View に反映される (表示が更新される)

• フォームにバインドされた場合は、フィールドの値が変えられたら、ViewModelのデータも更新される

• data / stores / formulas

Page 11: Ext JS version 5 を始めよう

ViewController• View の controller コンフィグで指定する • イベントハンドラ • View では ViewController にあるイベントハンドラ名を文字列で指定するだけ。

• reference と lookupReference()

Page 12: Ext JS version 5 を始めよう

ライフサイクル• どちらも View のインスタンスと一蓮托生 • View のインスタンスが作られると、ViewModel も ViewController も作られ、破棄されるとなくなる

• 通常の Controller は、アプリが終わるまで存在しつづける • 通常の Controller の利用場面は限定的になる

Page 13: Ext JS version 5 を始めよう

DEMO

Page 14: Ext JS version 5 を始めよう

ルーティング• Ext JS アプリはSPAだからページ遷移はない • # によるディープリンクをつけることでブラウザの履歴を記録できる

• ディープリンク以降の文字列を解釈して、アプリのある局面を表示させる手段

• 実際にはメソッドが呼び出される

Page 15: Ext JS version 5 を始めよう

レスポンシブ• 一つのアプリで全てのデバイス・場面に対応する • 小さい画面、大きい画面、横向き、縦向き • CSS のメディアクエリでの切り替え • リキッドレイアウト • で実現

Page 16: Ext JS version 5 を始めよう

レスポンシブコンフィグ• Sencha は JavaScript で解決する。 • Sencha Touch ではデバイスプロファイル。 • Ext JS 5 ではレスポンシブコンフィグ • デバイスの様々な情報を組み合わせて、コンポーネントの設定が変更できるようになっている

Page 17: Ext JS version 5 を始めよう

DEMO

Page 18: Ext JS version 5 を始めよう

データパッケージの改善• rawData の廃止 • fields 定義が基本的に不要 • チェーンドストア • 他のストアを参照するストア、独自のフィルタ、ソート • カスタムフィールド • 独自のフィールドタイプを設定できる、コード重複回避

Page 19: Ext JS version 5 を始めよう

Sencha チャート• Sencha Touch に採用されていた HTML5 ベースの新しいチャートパッケージ

• Canvas を使うことで表現力UP • スワイプ/ズームなどのインタラクションにも対応

• チャートの種類も増えた

Page 20: Ext JS version 5 を始めよう

グリッドの進化• セル内のコンポーネント • セルアップデーター • レンダリングの高速化 • ウィジェット

Page 21: Ext JS version 5 を始めよう

他にも沢山• タグフィールド

• セグメンテッドボタン

• トリガー

• ダッシュボード

• Ext.mixin.Mashup

• private メソッド

• コンフィグシステム

• アソシエーション

• Sencha Cmd

Page 22: Ext JS version 5 を始めよう

ご清聴ありがとうございました