15 min/d

ぼうずやのにっき

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 はどうなのかな。