ExtJS PerfectDay #006 – 20100/05/21 の受講ノートです。 この件について@kotsutsumi さんに質問しないでください。
アジェンダ
- Jasmin入門
- PhantomJSとJasmin連携
- Ext.Loaderによる本格スタブ開発
- クラスシステム ー uses・requires
- MVCアプリケーションーアプリケーションデザイン(クラス設計)
- Windowベースアプリケーション ー アプリケーションデザイン(クラス設計)
- タスクバー作成
- ウィンドウモジュール機構作成
- (調整枠)
- Ext JS 4によるプラグイン開発
- SASS入門
Jasmin入門
JSで作られているテストフレームワーク。 次のファイルを読み込め。
Spec定義(テストケース) ExtJSコンポーネントのテストをしてみる。
Spec定義
前準備,後始末
describe
に指定した関数内に前準備後始末 beforeEach テストケースが実行される直前に呼び出される関数オブジェクトを指定 afterEach
it
テストケースを書くときにはitを使う。
expect
最終的に値を評価する。
PhantomJSとJasmin連携
コマンドラインでのテストを実現する。 APIはほとんどない。画面のないブラウザ。 PhantomJSはQtで作られています。
QtはクロスプラットフォームのUI開発フレームワーク 内部的にWebKitをサポートした。ブラウザコンポーネントを貼り付けられる。 WebViewの昨日を利用してJSを動作させる。
WebViewをC++から行うことができる。 JavaScriptからイベントを起こしてC++を呼べるし,逆も可能。
閑話休題
コマンドラインでJasmineのテストケースを実行し,実行結果のDOMを解析する。 Jasmineドライバーは動かない。
phantomjs test.js SpecRunner.html
test.js はgistにある。 コマンドラインにテスト結果を出力する。 書き換えれば好きな出力形式にできる。
クリックイベントを起こすことができる。
Extもテストフレームワーク。を作っているというアナウンスがあるが,まだ出てきていない。 イオンプロジェクトも同様。>ExtDesignerを作っているもの。 titaniumとかairは中身のjsファイルは丸見えですよ。 flashを使って暗号化することができるので,そこにjavascriptをいれると勘合化できるがflushプレイヤー必要。
Ext.Loaderによる本格スタブ開発
Ext.LoaderによるCTOP開発
JavaScript を動的にロードできる。Scriptタグを動的に作る。 でも実際は中々むずかしい。Ext.Loaderがそれをやっていた。が使うなといっていた。 サーバーに負荷もかかるしパフォーマンスは悪い。 使うのなら最初から固めて読み込むほうが速い。
では,なぜLoaderなの?
Ext4のコアクラスとLoaderは切り離せない。
- ext.js を読み込み,Exx Core システムのみ読み込む。
- クラスの依存関係は,requiresとusesを利用して解決させる。
- コンポーネント単位で開発を行う。
- 常に,コンポーネント別と結合テストを行えるようにする。
- Component Test Oriented Programing –> CTOP
上記のコードを入れることが重要。実はいらないかもしれない。
Ext.reg は廃止されている。
クラスシステム ー uses・requires
Loader での依存関係を記述するもの。 自分のクラスでも,これが書かれていないと Loader が働かない。 これを使うのは必須。 結合時は無関係になるが
- requires はクラスが生成される前に必ず使われる。
- uses は,クラスファイルの読み込み時にすべて読み込まれる訳ではなく,インスタンス時に読み込まれる。
- 絶対使うばあいはrequire
- configオプションで使うか使わないか選べる場合はuses
MVCアプリケーションーアプリケーションデザイン(クラス設計)
app.jp
app/controller/controler.js
複数のコントローラーができあがると思うので, その基本となるアプリケーションの基底コントローラークラスを用意した方がいい。 次のコントローラークラスでは,アプリケーションとビューポートを アプリケーションのネームスペースのプロパティに保存している。
実際のコントローラーは,このクラスを継承する。
app/controller/index.js
app/view/viewport.js
ビューポート
オススメなalias の名前の付け方,widget の次にアプリケーションの名前空間をつける。
おすすめなidのつけかた。プリフィックスにアプリケーションの名前空間をつける。
Windowベースアプリケーション ー アプリケーションデザイン(クラス設計)
この書き方おぼえとけ。アイテムを設定するメソッドを別に用意する。
このメソッドおぼえとけ。initEvent はExt.Panelを継承したコントロールで使用できるよ。 継承して,
次のコンフィグおぼえとけ
画面からはみ出さないようにする。ただExt4では,バグってますよ。
Ext JS 4によるプラグイン開発
コンポーネントにオプションをつけるようなものを作るときにプラグインがある。 Ext4では次のように書け
Ext3ではつぎのように
SASS入門
パス。
twitter携帯からこのページの紹介を確認し、我慢できずに仕事前に読ませて頂きました。 ありがとうございます、「Ext.Loaderによる本格スタブ開発」「クラスシステム ー uses・requires」「MVCアプリケーションーアプリケーションデザイン(クラス設計)」のセクション、かなり参考になりそうです。 今晩、時間があったら早速いろいろ試してみます。
一つ質問させてください。 「MVCアプリケーションーアプリケーションデザイン(クラス設計)」セクションの「app/controller/controler.js」で、基底コントローラクラスを作ると記載されていますが、configオプションでextendが指定されていません。 これ、Ext.app.Controllerを継承させるんですよね?
そうです。extend指定が抜けてます。(^^;
なぐりメモをあとで整形した際に追加し忘れました。僕の責任です。m(_ _)m ソース直しておきました。
あと、この記事の時点と現在で一部ExtJSの仕様に変更があることがありますので、 お気をつけください。
回答ありがとうございました。 ちなみに、昨夜3ヶ月間ほど解決しなかった問題が、こちらの記事の情報から派生した調査で解決しました! 感謝です!
Your style is really unique compared to other folks I’ve read stuff from. cbgadgdgdadg