isomorphic所感

React・Fluxまわりをひと通り触ってみたので所感を徒然。

isomorphicなアプリを書く

そこまで大した話ではない。

  • isomorphicなライブラリをnpmで入れる。
  • isomorphicなコードを書く。
  • node.js(io.js)ではそのまま動作。
  • ブラウザ用にはbrowserify。

所感:

  • bowerのオワコン感。
  • webpackのtoo complicated感。

altJSの選択

巷のFluxライブラリはReact前提な部分があるので、全てを生JSを書くことはまず考えられない。

ほぼ以下の4択(ハイブリッド可能)。

  • CoffeeScript
    • 書きやすさ以外に特筆すべき部分はない。
  • TypeScript
    • 型を書けるという圧倒的ユニークスキル。
  • JSX
    • The React。ES6のサポート。
  • ES6 JS (babel, etc.)
    • 次世代JS。
    • 正式サポートされるまでの投資感。
    • トランスコンパイラの代表格babel*1が何故かJSXをサポートしている。

判断の軸:

    • これを再重視するならTypeScript以外の選択肢はない。
  • 書きやすさ
    • CoffeeScriptはなんだかんだで書きやすい。ただES6が十分書きやすいので、今後の立場はどうなるか。
  • 将来性
    • 当然のことながらES6がランタイムの最適化の期待大。
  • React親和性
    • 1つのライブラリがコンパイラの選択肢にまで影響を及ぼすとは。
    • あるいはVirtualDOMを簡単に書くためのライブラリを使うのは手だが…。

所感:

  • 個人的には全てをbabelに統一するのが良い感じはしている。
    • babel, babel-node
    • browserify, babelify
    • JSXサポート
    • ES7サポート (stage 0)

isomorphicを崩す仕組み

変な表現ではあるが、全てを共通コードにするのは無理。

  • サーバー側: DB, セキュリティ, ...
  • クライアント側: CSS, アニメーション, ...

透過的に委譲するような仕組み

  • Fetchr的な

クライアント側にサーバー側のコードを見せたくない話

  • JSファイルサイズ肥大化
  • セキュリティ

目下この部分を考え中

  • コンパイラレベルのサポート。conditional compilation的な。
    • あまりこういう話はhotじゃない感。
  • 今はエントリポイント分けて頑張るか。

Fluxについて

TODO

Polyfilについて

TODO

*1:元es6to5