このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

Vue.js

TypeScriptつうよりVue.jsだが、

  1. Vueインスタンス: new Vueで生成したオブジェクト
  2. オプションオブジェクト: new Vueに渡す引数
  3. 広義のVueインスタンス: コンポネントなども含む。ツリー状に配置される。
  4. ルートVueインスタンス: 広義のVueインスタンスのツリー構造におけるルート、狭義のVueインスタンス
  5. リアクティブシステム: 互いに変更を伝え合う一連のモノ達、くらいかな?
  6. dataオブジェクト: Vueインスタンスのオプションオブジェクトのdataプロパティとして与えられるオブジェクト。dataオブジェクトのプロパティはすべてリアクティブになる(=リアクティブシステムに登録される)。
  7. ビュー: 実質的にはHTML要素(であるオブジェクト)のことだと思わる。
  8. 反応: リアクティブシステムに登録されたモノが変化すると、関連付けられた他のモノも変化する。典型的には、dataオブジェクトのプロパテが変化すると、対応するビュー・オブジェクトの内容や属性が変化する。内容/属性は、要素オブジェクトの部分。Ark2のコネクターのようなものがあるのだろう。
  9. ライフサイクルフック: オブジェクトのライフサイクルで起きる典型的事象(ハプニング)に対するイベントハンドラフックは、アロー関数では書けない、thisが違うオブジェクトを指してしまう。
  10. データバインディング: バッチ方式テンプレートでは、プレースホルダーは展開されて固定されて終わるが、データバインディングでは、データ(のプロパティ)とプレースホルダーがリンクあるいはコネクトされる。
  11. マスタッシュ構文: テンプレート構文の有名なやつ。
  12. ディレクティブ: 'v-'から始まる属性。マスタッシュ構文と共に、テンプレートを制御する。Smartyなどとは構文思想が違う。いわゆる「HTML非破壊なテンプレート構文」。ディレクティブは名前と式をパラメータに取る。v-bind:id="..." なら、idが名前で"..."が式。
  13. 修飾子:ディレクティブに対するパラメータ渡しの方法のひとつ。名前パラメータの後にドット区切りでさらに名前を続ける。
  14. 算出プロパティ: データバインディングのデータ側のgetter関数によるプロパティのこと。getterが毎度呼ばれるわけではなくてキャッシュされる。算出プロパティにsetterも指定できて、setter/getterをうまく使っている。良いアイデアだ。

注意:

  1. Vueインスタンスのdataオブジェクト(オプションオブジェクトの一部)のプロパティはリアクティブ変数となるが、それはVueインスタンスの初期化時に登録されるので、後から来たプロパティはリアクティブではない。
  2. オプションオブジェクトのプロパティは、Vueインスタンスのプロパティにセットされるが、それはドルマーク付きのプロパティやメソッドで参照できる。例: vm.$elで監視対象のHTML要素。
  3. コンポネントはツリー構造で、vm.$parent, vm.$children, vm.$rootでツリー構造を知ることができる。
  4. オプションオブジェクトのdataオブジェクトのプロパティは、そのVueインスタンスのトップレベルに持ってこられる。
  5. VueはAjax部分は持ってない。適当に小さなライブラリを選ぶ。

webpackとの関係

  1. webpackは、ファイルをモジュールと考えて、拡張子でモジュールの種類を判断する。
  2. モジュールには相互以前関係があるので、モジュールの集合体は有向グラフと考えることができる。
  3. 結果として、モジュール群をなんらかの配布形式にする。
  4. webpackが利用する変換プラグインをloaderと呼んでいる。
  5. loaderにはAltJSのトランスパイラや、スタイル言語のCSSへの変換などがある。
  6. スクランナーっぽい機能も入っている。