倒れるときは前のめり。

カレーが好きです。

Meteor チュートリアル(Blaze)をやった

フルスタックなJavaScriptフレームワークのMeteor(みーてぃあ)を触ってみた。 JavaScriptだけ(?)でそこそこ動くWebアプリが作れるとは…と、 サーバサイド中心に触っていた自分としては驚きの連続。

URLはこちら

感想

  • リアクティブすげー
  • 値監視 → 変化したら自動レンダリング(再読み込み)
  • 2窓開いて一方でTODO更新すると他方にもリアルタイムで反映される

学習メモ

はじめてのMeteorアプリ作成

  • ホットコードプッシュ
    • ブラウザリロード不要でソース変更箇所が(ほぼ)リアルタイムに反映される
    • HTMLもCSSもリアルタイム!
    • 仕組みよくわからなすぎて気持ち悪い
    • どこを追いかければいいんだ…

Spacebarsでテンプレート

  • Spacebars < Handlebars をもとにテンプレート機能を提供している
  • テンプレートの構造(HTMLとか)は、bodyタグの外で定義する
  • テンプレートに入れるデータは、jsで定義する
  • {{#each}}のつかいかた

Mongoコレクション

艦○○これくしょんではありません

  • MongoDBとは: いわゆるNoSQLの一種

    • NoSQL: Not Only SQL
    • Key:Value でデータを管理
    • キャッシュにデータ格納させる
    • RDBみたく厳重にデータのトランザクションしなくていいもの
    • パフォーマンス重視のデータを扱うときに使う(単純なカウントとか)
    • 代表的な例: MongoDB, KVS, Memcached
  • db.(schema).find

フォームとイベント処理

  • submitを起点に、mongoDBに連携させる
  • Tasks.insert({key: value})
  • event.target.text.valueの意味調べる
    • 発火元のテキストフォームの値ですよねこれ…

コレクション更新と削除

  • Tasks.update(selector, modifier, [options], [callback])
  • Tasks.delete(selector)
  • (callbackは書けるけどいら)ないです

はじめてのパーミッション制御

  • Meteor.methods
  • Optimistic UI
    • サーバ側とクライアント側両方に動作
    • まずはクライアント側を更新(サーバ側の処理結果は待たない)
    • サーバからの処理結果が反映されたらサイドクライアント側を更新
    • 処理結果が同じなら、UI上変化なし

フィルタリング制御

  • DDP
  • autopublishパッケージ
  • publish / subscribe

次にやる