Sencha Touch 1.0の概要

まえがき





Sencha Touch (ST)は、iPhone、iPad、Androidに特化したWebサイトおよびWebサービスを開発するためのライブラリです。 これはハイテクブラウザインターフェースの市場向けのExtJSライブラリの有名プロバイダーであるSencha、Incによって開発されました。



STの主な目標は、可能な限り標準インターフェイスとiOSインターフェイス要素の動作を模倣し、プログラマに柔軟なAPIを提供することです。



ライブラリのコアは、JavaScript、CSS3、およびhtml5(WebKitエンジンの解釈)で記述されています。 FireFox 4およびIE 9は、サポートされているブラウザーのリストに含まれていません。



したがって、STアプリケーションは通常のクライアントサーバー開発であり、クライアントはSafariまたはChromeブラウザーであり、サーバーはJSON、XML、およびその他のいくつかで「応答」できる任意のWebサービスです。







応用分野





はい。STは、いくつかの倒錯の後、デスクトップシステムで動作するようにできます(ブラウザの制限を思い出してください)が、開発者はモバイル「タッチ」デバイス専用のライブラリを作成しました。



デスクトップのタッチインターフェースで作業するのは疑わしい喜びであり、スクロールバーを返すことはできますが、STを使用してデスクトップに何か深刻なことをするという考えを放棄する方がよいでしょう。



したがって、主な領域は、独自の「アップル」インターフェースにあるはずのアプリケーションですが、ブラウザからは動作します。



STのニッチはTwitterやその他のテキストサービスに対するあらゆる種類の「クライアント」であるため、STで複雑なビジネスロジックを構築するのにかなり長い時間がかかりました。



また、モバイルインターネットは常に安くはないという事実を念頭に置く必要があります。STは、すべてのトリックにもかかわらず、依然として370 Kb未満のかなり大きな子牛です(グラフィックスはカウントしません)。



忘れてはならない2番目のポイントは、アプリケーションのリソース消費です。 作業の過程で、ライブラリはブラウザオブジェクトのDOMツリーと積極的に連携します。その結果、長時間使用すると、ブラウザは大量のメモリを消費する可能性があります。



安全上の注意





開発を開始するときに覚えておくべきこと:

•ライブラリコードは、バージョン番号にもかかわらず非常に粗雑であり、さまざまな種類のエラーが多数あります。 例として、優れたビルド1.0を挙げることができます。このビルドでは、送信フォームハンドラーが呼び出されませんでした。つまり、フォームをサーバーに送信した結果を見つけることができませんでした。 フォーラムでは、パッチは非常に迅速に投稿されましたが、後味は残りました。

•マイナーバージョンのAPIは、廃止予定のコンポーネントの宣言まで、大幅に変更される可能性があります。

•独自のコンポーネントを作成している場合、バージョンを更新すると、要素テンプレートのリファクタリングが必要になる可能性が高くなります。

•ドキュメントは正確ではありません。 実際の要素の動作が公式Webサイトに記載されているものと異なる場合は、ライブラリ内を調べる必要があります。 幸いなことに、コードは適切にフォーマットされており、理解することができます。

•フォーラムを定期的に読んでください。 十分に促進された有料サブスクリプションの存在にもかかわらず、ほとんどの問題はコミュニティによって正確に解決されており、開発会社によってではありません。



開発およびデバッグ対象





STはブラウザライブラリであるため、開発ツールを備えたGoogle Chromeは比較的快適な開発に役立ちます。 はい、これはFireBugではありませんが、何もしないよりはましです。



「ネイティブ」デバイスの外観を評価するには、「Safari」を完全に使用できます。 もちろん、自動画面方向(水平から垂直、またはその逆)などの一部の「チップ」については、iPhoneエミュレーター(iPad)を搭載したMacを探すか、バーチャライザーでMacOSを実行する必要があります。



特記事項-ケースの99%での1024 x 768のブラウザウィンドウの解像度でのSafariの外観は、iPadでのみ同じです。



コアを知る





ライブラリ開発者にはいくつかのタスクがありました。

1.広範なExtJSコミュニティの新しいコアへの移行を促進する

2.可能な限りコンポーネントのコアレンダリングを促進し、一般に、ライブラリ全体の「比重」を高めます。これは、「祖父母」の巨大なサイズとそのゆるやかな昔が代名詞になったためです。

3. APIのシンプルさを保つ

4.適切に文書化する。



テンプレートエンジン、データの操作、要素の継承の問題など、多くの概念的なものが真剣に作り直されたか、ゼロから書かれたものでした。



ライブラリのコアは、アプリケーションを初期化するための一連のメソッドを持つスーパーグローバルExtオブジェクトとして開発者に表示されます。



各コンポーネントは、より基本的なコンポーネントから派生します。これにより、たとえばウェアハウスへのアクセスインターフェイスが統合されるため、コンポーネントの理解が容易になり、さらに重要なことにコンポーネントの互換性が向上します。



カーネルは、いくつかのクラスセットに分割されます。

•データ-データ、ストレージ、データ変換、およびデータ配列、フィルタリング、検証などのあらゆる種類の作業。著者は、多対1の関係を含むデータモデル(MVCから)および検証(検証)ルールの概念を導入しようとしました。 このイノベーションの利点は、サーバー側ではまだ再確認する必要があるため、かなり疑わしいものですが、それでもなおです。

•フォーム-インターフェイス要素。 テキストボックス、ドロップダウンリスト、カレンダー、通常のリスト、ラジオボタン、チェックマークはすべてここにあります。

•レイアウト-ブラウザウィンドウで要素をレンダリングする役割を担うカーネルの一部。 理論的には、フォームはページ上に単独で配置することも、タブバーの一部にすることもでき、要素をフォームの上部または下部に押し付けることができます。

•Lib-カーネルの基本コンポーネント。

•Util-直接呼び出さないでくださいすべての種類のユーティリティとクラス。



STのオブジェクトの概念





ライブラリのコンポーネントは、実際には一連のメソッドとプロパティを持つJavascriptオブジェクトです。 隠しメソッドとパブリックメソッドまたはプロパティへの分割は非常に条件付きであり、ドキュメントのレベルでのみです。



メソッドとプロパティに加えて、ほとんどのオブジェクトには、視覚要素のハンドラーと出力テンプレートをハングアップできるイベントがあります。



STの世界には多くのイベントがあります。実際、この世界でくしゃみをする人は皆、イベントです。要素を作成し、それをページに追加し、それを描画して破壊で終わるまでです。



特に、メッセージキューとハンドラーの呼び出しの無限の循環は、動作中のアプリケーションのゆったりとした時間を説明します。 これは汎用性の代価です。



自分で発明できるイベント。 特に、ライブラリの作成者は、クリックとポインターの動きに関するブラウザーのJavaScriptイベントを使用して、タッチイベントをエミュレートしました。



最も一般的なケースでは、STを使用したアプリケーションループは次のように分割されます。

•初期初期化(Ext.setupの呼び出し)

•サーバーからのデータを待っています

•サーバーの相互作用



サーバーと、通常はアプリケーション内でのすべての対話は、イベントハンドラーのレベルで発生します。



独自のコンポーネントの作成





最も恐ろしく魅力的なアクティビティは、独自のコンポーネントを作成することです。これは、ライブラリが提供するコンポーネントのセットがかなり限られているためです。一部のコンポーネントは元のiOSとまったく同じように機能しません。



これを実現するため、開発者は前進し、テンプレートエンジンをライブラリに組み込みました。 現在、それ自体の各フォーム要素には、ブラウザウィンドウでの要素の表示を指示する特定のhtmlテンプレートが含まれています。



テンプレートは、特別なマーカーがオブジェクトの属性に置き換えられる通常のhtmlマークアップのフラグメントです。 オブジェクトをレンダリングするとき、そのすべての可能な属性がテンプレートに転送されるのではなく、プログラマーによってハードセットされた属性の一部のみが転送されることに注意してください。



また、テンプレートには、その部分の条件付きレンダリングの初歩的な可能性があります(属性Aの値が設定されている場合、行Bを表示し、そうでない場合は行Cを表示します)。 レンダリング条件として単純な算術演算の可能性があります。



フォーム要素に適したフォームは、Ext.form.Fieldまたはその子孫から新しい要素を生成することです。



したがって、新しいコンポーネントは「ネイティブ」コンポーネントのように動作します。



データを操作する





ライブラリはそのままで、JSON、YQL、およびXML形式のデータを処理できます。 サーバーへのAJAXリクエストを行い、応答を正しく解釈することができます。



ストレージの概念はSTで導入されました。つまり、何らかの属性によって正式に統合されたデータのコレクションです。 たとえば、データベース内のテーブルはリポジトリの類似物として機能し、各テーブルエントリはこのリポジトリのモデルのインスタンスとして機能します。



リポジトリは、その中のエントリを編集するときにフィルタリングできます-それらを「編集済み」および他の多くの有用なものとしてマークします。



特に、リストはデータソースとしてウェアハウスを使用します。



まとめ





Sencha Touchは、iOSインターフェースでブラウザーベースのソリューションを開発するための強力なライブラリであり、優れたアーキテクチャコンセプトを備えていますが、実装は粗雑です。



開発者から要求されたお金の価値はありますか? それはあなた次第です。

ただし、解決の過程で、非営利的なものにはオープンソースバージョンを使用できます。



何を読んでどこを見るか






All Articles