これはFOAM Frameworkについて、公式ページを翻訳しながら学んでいこうという記事です。
おとといの記事では分かったような分からないような感じだったので、次は詳細なAboutページを翻訳していきたいと思います。
もし何か間違いやおかしい点などありましたら、コメントを頂けると幸いです。
原文はgithub.ioの The basic
から始まる文章で、
ライセンスはこちらに準拠します。
以下翻訳
FOAMの基本原理は fast apps fast(速いアプリを速く作る?) です。
FOAMはPCでもモバイルでも、ロードや動作が速いアプリを速く書くのを助けるツールで構成されています。
私たちの目的はどのコードのかたまりにおいても、できるだけ速くするといったものです。最も速く、最もセキュリティに強く、最もバグの少ないコードを書くようなものではありません。
FOAMはメタプログラミングフレームワークです。とても宣言的で、リアクティブです。なぜなら、アプリがどう動くべきかをとても高いレベルで表現する手段だからです。
- FOAMは 徹底的にMVC です。全てはモデルから流れてきます。モデルは、あなたのアプリがどのように世界を見るかというものです。その実体は何でしょうか?私たちは何を知るでしょうか?私たちは何ができるでしょうか?
- FOAMはとても進歩したクラスのシステムを持っています。オブジェクトはプロパティやメソッドを持っています。しかし、それだけでなく、ユーザーのアクションやビューテンプレートやi18nの文字列などを持っています。
- アクションは無効になったり隠れたりといった状態をリアクティブに受け取ります。
- プロパティはタイプだけでなく、ファクトリーやデフォルト値や
postSet
ハンドラーやデフォルトのビューなどを持っています。
- FOAMはとても進歩したクラスのシステムを持っています。オブジェクトはプロパティやメソッドを持っています。しかし、それだけでなく、ユーザーのアクションやビューテンプレートやi18nの文字列などを持っています。
- FOAMは リユーザブル で コンポーザブル です。リユーザブルなビューコンポーネントだけでなく、リユーザブルなデータストレージ(下部を参照)やリユーザブルなコントローラを持っています。
- FOAMは リアクティブ です。ビュー同士を結びつけるのが簡単で、アップデートされるべきときにアップデートされます。
- FOAMはリアクティブで、クロスブラウザで、 速い です。しかし、ダーティチェックは悪い意味で拡大しています。また、
Object.observe
はクロスブラウザではありません!パフォーマンスで私たちがどのようにこれに対処しているか見ることができます。
- FOAMはリアクティブで、クロスブラウザで、 速い です。しかし、ダーティチェックは悪い意味で拡大しています。また、
- データ はコードよりよいです。 スマートなデータ ならなおさらです。FOAMのオブジェクトはリフレクティブです。つまり、FOAMのオブジェクトはどんなプロパティを持っているか分かっていて、私たちはJSONやXMLや他のフォーマットでそれをシリアライズすることができます。それらは知的で、比較したりdiffをとったり、異なるデータベースにおいてどのように保持されるのが最良か計算できたりします。
-
インターフェイス はインプリメンテーションよりよいです。FOAMはデータストレージ(下部を参照)やビュー(DOMや2Dのcanvasなど)のための標準のインターフェイスを持っています。
- 私たちが提供していない何かが必要ですか?標準になるほどパワフルな新しいインプリメンテーションを書きましょう。
- FOAMはユニバーサルなインターフェイスを持っています。例えば、DAO、つまりData Access Objectや詳細について考える必要のないストロングデータを持っています。たくさんのDAOのインプリメンテーションがあります。
- webには、indexedDBやLocalStorage。
- Node.jsには、MongoDBやXMLファイルやJSONファイル。
- Google Compute Engineには、Cloud Datastore(Node.jsからの)。
- 全てにおいては、とても速いインメモリのインプリメンテーション。
- 自動的にインデックスを張って、検索を簡単にします。
- ロギングやタイミングやいくつかのキャッシュストラテジーには特別に関数的なデコレータDAOがあります。
- IndexedDBの一番上の層の一番上に1つのラインのネットワークを配置します。
- データを変えることや何かをモックにすることなく、実際のスタックをテストデータの配列と交換します。
以上翻訳
なんかだんだん全容がつかめてきたような気がします。
次回の記事では、(やっと)チュートリアルを翻訳しながら進めていきたいと思います。