Classic Toolkit / Modern Toolkit ってなんだろうね。

toolkitisformultibrowsersdevicescreens

toolkitってなんだ?

Sencha Ext JS 6 は、 Ext JS 5 と Touch 2 のライブラリが統合されました。そして、Sencha Ext JS 6 の中で、Ext JS 5までのライブラリ、Touch 2のライブラリをそれぞれtoolkitと呼びます。

Ext JS のコンポーネントをclassic toolkit (以下、classic)、Touchのコンポーネントをmodern toolkit (以下、modern)と呼びます。

classic

classicは、IE8のような古いブラウザ向けのツールキットです。

modern

現在は、modernは、Touchの機能を指しますが、モダンブラウザーの機能をフルに活用するデスクトップアプリ制作のために、ますます多くの構成要素が追加されていきます。

classic 入らない子?

「よし、古いブラウザに対応しないなら、modernだろっ!?」

って、思ったそこのあなたは、ちょっと待ったです。

classic は、古いブラウザ向けのツールキットとしていますが、現在までの様々なブラウザに対応しています。なので、現実的には、ブラウザ用ツールキットは、classicです。

現状、Ext JS 6 を使った開発では、PCブラウザ、タブレットは、classicタブレット、Phoneデバイスは、modernといったところでしょうか。もちろん、前に紹介したように、modernを殺してclassicだけとかもできます。

Sencha Cmdでページを作成すると、特に指定しない限りclassicmodernの両方が使われる状態になります。これをユニバーサルアプリケーションと呼びます。

なので、classicが入らないとかそんなことにはならないかと。

サポートされているブラウザ

それぞれのツールキットがサポートしているブラウザバージョンは、下記の通りです。

Modern Toolkit

デスクトップ
  • IE11+
  • Firefox and Firefox ESR (Latest 2 Versions)
  • Chrome (Latest 2 Versions)
  • Safari 7+
モバイル
  • IE11+
  • Safari 7+
  • Android 4.0+ Chrome
  • Android 4.4+ Native

Classic Toolkit

デスクトップ
  • IE8+ (Strict DOCTYPE)
  • Firefox and Firefox ESR (Latest 2 Versions)
  • Chrome (Latest 2 Versions)
  • Safari 7+
  • Opera (Latest 2 Versions)
タブレット
  • Safari 7+ (iPad)
  • Android 4.0+ Chrome
  • Android 4.4+ Native
  • Windows 8 Touch Screen – IE10+

つまりどういうことやねん

まぁ、なんだ、ページにアクセスすると、アクセス元の端末次第で、よろしくやってくれるってことじゃ。 … ということなんですが、なんでそう動いてるのという話をして今日は終わりたいと思います。

生成されたmodern/src/Application.jsを眺めてみましょう。

profilesというのがありますね、コイツです。

ドキュメントのDeveloping for Multiple Environments and Screensに記載されているとおり、Runtime Configurationsのところで説明しているExt.app.Profileを使ったランタイム設定で振り分けされています。

Modernになるのは、PhoneとTabletが指定されていますね。PhoneとTablet意外は、classicで表示されてるということです。

Sencha Ext JS 6で作成したページが表示されるまでのプロセスは、図の通りです。

fig2016021301

このMicroloaderが必要なファイルの読み込みや設定を行い、このときに振り分けが行われます。

おわりに

はぁ、Microloaderとか、また新しいのででてきたわぁ… 既に色々用語出てきて複雑やわぁ… って思いますよね。

はい、私も思います。

Sencha Ext JS の構造は、非常に複雑ですが、洗練されています。なぜなら、混沌としたWEB環境に対するアプリケーション開発環境を、結局自分で作ろうが、他のライブラリを作ろうが、同じような事を悩まなくてはならないし、解決しなくてはなりません。

もうちょっと我慢して、構造を理解してみてください。

作りたいアプリケーションを作るための土台をどれだけSencha Ext JSが上手くカバーしてくれているか、そして、その部分をライセンスを買うだけでアウトソースできていることを実感できるはずです。

※ Modernのだんだんこっちに寄せていくよ感… Ext JS 7 のフラグ立ってますやん… まぁModernのクラス構造みればTouch 2のままなんで、貧弱なんですが、toolkitを気にしなくて全コンポーネント扱えるようになるのかね。

Classic Toolkit / Modern Toolkit ってなんだろうね。