Vue.js v-tokyo オンライン Meetup#14のメモです。
KARTE MessageにおけるVue3移行 @Kippei Wadaさん
開発環境
学習コストの低さなどからVueを選択している。
- サービスの巨大化に伴いマイクロサービス化
- 共通コンポーネントあり
移行について
既存はあるけど +α段階。高速にプロトタイピングしたいけど、人の入れ替わりが激しい。学習コストが低い方が良い。
Vue3のいいところ
- TS対応
- シンプルに記述できる
- Composition APIのおかげでロジック再利用性が高い
新規でVue3で作る方法で移行
Vue2 → Vue3
基本新しく作り直し、Vue2の引っ越しコンポーネントやVuexなどを移行してきた。
気になった点など
#v_tokyo14 Vue2のプロジェクトではvue-property-decorator とか使ってなかったのか気になる。
— もふもふ (@froakie0021) 2021年10月27日
使ってないよと回答いただいた。デコレーターは便利かもしれないけど、アップグレードを考えるとない方が楽なのかもねと思った。
#v_tokyo14 stateにロジックを加工している。Vuexのテストでロジックのテストを担保しているのかな?
— もふもふ (@froakie0021) 2021年10月27日
Storeのテストは記載できていない。今絶賛整理中。Vuexはプロバイダ管理に置き換え、それに対してテストを書こうとしている。 #v_tokyo14
— もふもふ (@froakie0021) 2021年10月27日
Vuex 5 – Vue 3におけるステートマネジメントの今後 @Kia kingさん
Vuex3 = Vue2、Vue2がある限りはサポートされる。 Vuex4はVuex3の完全互換。API変更はない。
Vuex5 Vueのグローバルステートマネジメントを目的にしている。 ステートマネジメントは流行っている。
グローバルステートマネジメント = Vueの世界では、親子関係にないコンポーネント間で共有されるステートのこと。 親子関係のdataのやりとりはPropsを使う。そうじゃない場合(ページ跨ぎetc...)とかにグローバルステートを使おうという思想。
モチベーション
- Code splittingしたい 今までは一部ページしか使わないのに全ページで読み込まれていた。使うところだけでステートを持ちたい。
- SSRのサポート SSRでVuexを使うのはオレオレ実装になりがち。
- グローバルステートをVue Devtoolsでサポートしたい
- 拡張性
目指すところ
- Options/Composition APIで書けるようにする
- 完全なTypeScriptサポート
- Mutation廃止 Fluxから脱却してシンプルにしたい
- ネストされたモジュールの廃止 複数Storeを組み合わせて使う
storeオブジェクトを一度作り、それを渡してあげる。commit・dispatchなどを使う必要はない。 template内で使うことができる。
このstoreオブジェクトは呼ばれない限り使われない。自動でcode splittingできる。
インスタンスをどこに差し込むのかがポイントになりそう。
気になった点など
確かにページ跨ぎのPropsはVuexみたいなところある。ルーティングでオブジェクトPropsするのむずいし。 #v_tokyo14
— もふもふ (@froakie0021) 2021年10月27日
自分が関わってるアプリもページ跨ぎはVuexでデータ受け渡しているけど、これ結構よくあるパターンなんだなと思った。
聞いているとVueはわかりやすくフレンドリーに、を重視しているよなあと思う。そういうところがいいよなあ。 #v_tokyo14
— もふもふ (@froakie0021) 2021年10月27日
みんなでオレオレ実装するのやめようよ、とか1週間も勉強がいるなんて重いよねという話を聞いて↑みたいな印象を受けた。
Everything Beyond State Management in Stores with Pinia @posvaさん
デモをずっとみていてメモが取れなかった。
気になった点など
Pinia、さっきみたVuex5に似てる。 #v_tokyo14
— もふもふ (@froakie0021) 2021年10月27日
コードがシンプルでいいなと思った。記載量が減る表現がわかりやすかった。
Vue Devtoolsって結構いろんな情報見えるんだな。自分は全然使いこなせてない気がしてきた。参考になる。 #v_tokyo14
— もふもふ (@froakie0021) 2021年10月27日
Timelineという機能はこう使うのか、というのが印象に残った。
全体を通して
「できる限りPropsでデータはやりとりしつつ、どうしても必要ならState使っていこう。でもまずはコンポーネント設計だよね」という印象を受けた。
Container Component
Presentational Component
パターンがあるよと教えてもらったので調べてみる。
そもそもStoreがいるんでしたっけ、ってところだよねやっぱりね #v_tokyo14
— もふもふ (@froakie0021) 2021年10月27日
久しぶりに勉強会参加したけど、やっぱり業務だけだと「知らない」ものには出会えないなあと思った。