Meteorが1.0になったので入門してみた1/2
Meteorが1.0になったので入門してみた2/2
という感じで2日かけてチュートリアルをやってみました。
その感想を纏めてみたくなりました。
感動ポイント
リアクティブ・フレームワークの凄さを思い知りました。
チュートリアルで確認した範囲では、SessionとDBに値監視機能がついています。
「SessionやDB内容が変化させた瞬間にログ出力する。」が簡単にできました。
ルーティングですら、ちょっと今までの感触と違います。
例えば、ログイン状態によって現在のルーティングでの表示内容が変わることがあるかと思います。
(ログアウトしたから管理画面が非表示になるなど。)
ログアウト処理の後にコールバックで遷移処理追加しなきゃーとか考えたりしますよね。
Meteorの場合レンダリング対象のTemplateが変わると判断すると
勝手に再レンダリングされます。つまり状態がなんらかのアクションで変化することによって伝搬されて、勝手に事が進む感じです。
あー。これがリアクティブなんだー。とビックリでした。
サーバのDBとクライアントのDBがいい感じで同期してくれる。
初期状態だとブラウザのコンソールからDB中をいじったりできます。
しかもサーバサイドに自動でミラーされます。
Vue.jsとかMVVMフレームワークを触ってクライアントサイドのJsonオブジェクトとDOMが同期するだけでも感動していたので、
さらに便利になったと実感しました。
ただのDB同期だけじゃなく、サーバサイドの遅さを隠蔽する機能がある。
まずDB操作をするための関数が作れるんですが(Meteor Metohd)
これはクライアントから使うことができます。というかJSのコードでクライアントとサーバの両方で実行されます。
クライアントサイドはシミュレーション用で見た目速攻でDB処理を終わらせたと見せかけるのに使用されます。
サーバサイドはサーバなのでそれなりにレスポンス時間がかかって終わります。
レスポンスが返ってきた後にこっそり書き換えるという動作になります。
つまりリアルタイムWEBにするための技な訳です。こんな機能自分で入れようとしたら、泣くしかないです。
でも、ちゃんと挙動を調整しないとこの動きをしてくれないので、
要勉強ポイントではありそうです。
サーバサイドを含めて一つのアプリを作っている感覚
というのが感じたことです。
気になる点
え、この処理って共用なの?ってなる。
コードの置き場所によってクライアント専用か、サーバ専用か、
共用かというのがあります。
チュートリアルやってると、なんでこの処理は共用なの?ってなります。
特にルーティングのコードが共用に置かれるのがよくわかっていないです。
iOSとかとのネイティブアプリとの連携が面倒そう。
firebaseみたくSDKが欲しい