ちょっと環境が特殊なのでメモ書き程度
環境
- ruby 2.3.7
- rails 4.2.5
- node v8.11.3
- webpacker:3.5.3
- @babel/core: 7.1.2
- @babel/preset-react: 7.0.0
要件
- 既存のRuby on Rails4.2.5のアプリケーション上でvue.jsのコンポーネントが動いている(not SPA)
- vue.jsはwebpackerでpackされている (app/javascript以下)
- vue.jsと別app/assets/javascripts以下にはレガシーのjQueryやunderscore.jsで書かれたライブラリが存在する
-> 全てReactに移行したい
Ruby on Railsとreactの連携について
1. react-railsのgemを利用する
- デフォルトではAssetPipelineを利用
- 内部でreact.jsを持っているがバージョンが追従していない
- npmを使う時はbrowserify-railsかRailsAssets.orgを利用する?
- SSRにはexecjsを利用
- 最新版ではwebpackerとの連携でpackできる様になっている?
2. react_on_railsのgemを利用する
- webpacker利用で疎結合でReactを利用
- SSRにはexecjsを利用
- コンポーネントに値を渡すヘルパーメソッドが用意されている
3. Hypernovaを利用する
- SSRにnodeのサーバを利用
- Railsからpropsを渡す方法があまりスマートじゃない
軽く触った感じではreact_on_railsがお手軽で良かったが
React公式はreact-railsらしく、最新の情報では良くなっている様なのでもう少し試してみたい