2016-03-03 bouzuya/rally-rxjs の core を小さくした
bouzuya/rally-rxjs の client の core を小さくした。
client から dom / history / state を拡張として分離した。new Client(...)
に指定していた関連性の低い引数を、それぞれの拡張への引数に分離できた。
現状の拡張は client 内で次の役割を持つ。
app
に渡すoptions
を構築するapp
に渡すaction$
の一部を処理する
これらの処理の順序などが割といい加減なので、いまの拡張点を維持するかは分からない。また「 app
に渡す action$
の一部を処理する」のは application 内に持っていくほうが良いかもしれない。
改めて見ても bouzuya/rally-rxjs の構造は単純だ。RxJS Subject を使った single dispatcher を持ち、そこに Action (type Action = { type: string };
) を流す。流す対象の app は type app = (action$: Observable<Action>, options: any) => Observable<Action>;
の形だ。 app の戻り値は自動で dispatcher に流される。Action が null や type === 'noop'
になるまで dispatcher -> app -> dispatcher ... で循環する。
あともうすこし整理すれば切り出せそうだ。