Laravel + Vue, Nuxt 構成出身の私が、現時点で行ったライブラリ選定をまとめるぞ。
おすすめがあればコメント欄で教えてほしい...。
Database
Laravel なら全部入っているが、Next の場合開発者にお任せされている。
まず Validation
は Zod
がおすすめ。
型生成なども合わせて行うことが可能なので、jsonスキーマとの相性が最高。
DB周り、Model
Migration
Seeder
は Drizzle ORM
がおすすめ。
新興 ORM なのだが、すべてが TypeScript
で構築可能で、とてもタイプフレンドリー。
しかも簡易DBビューワーが付いてくるので、至れり尽くせり。
書き味は、SQLが関数で表現されている感じのシンプルな実装。
Kysely に非常に近い。
json など一部の記述はまだ未対応なので、kyselyと組み合わせる変態なライブラリも用意されている。
有名なのは Prisma だけど、これは独自言語のスキーマな点がBAD...。
やはり、TypeScript で SQL を書けたほうが良いと思う。
フォーム系
フォームを作成するなら React Hook Form
一択な雰囲気がある。
デフォルト値の設定から、zod バリデーションの組み込み、ハンドラーまでを担当。
useFieldArray()
というリストの追加、削除のラッパーまで用意されているので、使っていてとても楽しい。
React がレンダリングに特化しているので、Vue のように柔軟に値を持たせて、という思想で画面を作ると、コードがごちゃごちゃしてしまう。
汎用機能は外出しするのがよさそう。
UI 系
拡張性を考えると、TailwindCSS
ベースのものが良いと思う。
ただ、React の UIライブラリではなく、Tailwind の class セットを提供しているものが多い。
UIライブラリの導入は、開発速度やデザインの統一感であると考えるので、自身でコピペしてコンポーネントを作成したりの手間が一段階増えるのはいかがなものか。
(デザインをフルスクラッチするなら、更にに要らないし...)
このあたりがおすすめ。
個人的には daisyUI
がかわいくてとても好き。
アイコンは React Icon
を使っておけばいい感がとても強い。
全部入りである...。
linter
Linter
は ESLint
で十分です。
Prettier
は ESLint Stylistic
を使って、ESLint
に集約するとよい。
世の中には Biome というイケイケなやつがいるがあれは罠だ...。
HTML
に対応してねぇ...。
未来に期待して、ESLint
のエコシステムを利用するのが賢い。
Flat Config って言っても、設定ファイル JSON をマージするイメージなので、慣れたら簡単よ。
その他
チュートリアルにも出てくる clsx
。
className に対して、Vue のように配列やオブジェクトを渡すことが可能。
これが無いと Tailwind の開発できなくない...?
レイアウトコードとデザインコードは分けたいマン。