2016-04-04 b-o-a の core の size 削減をためした
先日 (2016-04-01) 紹介した新しい人と作業を開始した。彼は React + Redux でつくりたいようなので、その構成でいけないかを検討している。
「 b-o-a でつくると rxjs のせいで file size が大きい」という指摘を受けた。「 React も大概だろ……」と思いながらも bouzuya/boa-core の rxjs を必要最低限に絞れないか検討してみた。
ReactiveX/rxjs は次のようにすることで file size を削減できる。これは通信環境の良くないときなど file size を小さくしたい場合に良い。
import { Observable } from 'rxjs/Observable'; // Observable しか読まれない
この構成で browserify & uglify すると bouzuya/boa-core は 174KB → 14KB になる。小さい。
ただ、map を使うだけでも次のような手間がかかる。
import { O } from 'b-o-a';
import { map } from 'rxjs/operator/map';
map.call(O.of(1), n => n + 1);
事前に Observable
を拡張する方法もあるのだけど、記法的に嫌だったりする。
Cycle.js は rxjs への依存を捨てたし、 wrapper を噛ませることでいくつかの実装に対応しているのだけど、b-o-a はどうなのかな。