🤷♂️
Next.jsとRemixって何が違うの?
Next.jsとRemixって何が違うのかを把握していなかったので、ちょっと今更感ありますが調査した内容を軽くまとめます。
この記事を読んでもらいたい人
- 普段Next.jsを使っていて、Remixについて無知な人
- フロントエンドフレームワークの技術選定で迷っている人
この記事のゴール
- Next.jsとRemixの違いをざっくり把握できた状態になる
結論
- 状況やどこまでチューニングできるか次第だが、RemixはNext.jsよりもレンダリング速度を早くできそう?なので、とにかくパフォーマンス重視ならRemixという印象を受けました。
- ただ、SSGやISRが利用できないことやユーザーコミュニティの大きさを鑑みると、参考サイトも多いためNext.jsの方が扱いやすそう。
Next.jsとは?
- 同じくReactをベースにしたフルスタックフレームワーク
- 提供元はVercel
- 2020年3月の時点で、Netflix、GitHub、Uber、Ticketmaster、 Starbucksなどの多くの大規模なWebサイトで使用されている
Remixとは?
- Reactをベースにしたフルスタックフレームワーク
-
react-router
の開発元で知られている - SSRを基本としている
ルーティング
どちらもファイルベースのレンダリングシステムを使用している
-
Next.js
-
pages/
配下にセットすると、自動でルーティングされるpages/index.js ==> / pages/users/index.js ==> /users pages/users/create.js ==> /users/create
-
-
Remix
-
app/routes/
配下にセットすると、自動でルーティングされるapp/routes/index.js ==> / app/routes/users/index.js ==> /users app/routes/users/create.js ==> /users/create
-
データの読み込み
- Next.js
- SSR・CSR・ISR・SSG対応
- Remix
- SSR・CSR対応
デプロイ
- Next.js
- Node.js対応しているサーバーにデプロイ可能
- Remix
- Node.js非対応のサーバーでもデプロイ可能
スタイリング
- Next.js
- CSSモジュールに対応
- Remix
- Link機能を使い、必要なCSSファイルを読み込むことで適用される
Cookie・Session操作
-
Next.js
- 現時点では非対応
- ライブラリを導入する必要がある
-
例、nookies
-
-
Remix
-
createCookie
関数で対応している
-
画像最適化
- Next.js
-
next/image
で対応している
-
- Remix
- 現時点では非対応
SEO
- Next.js
-
next/head
で、ページやルートでimportして使うことができ、metaタグ設定可能
-
- Remix
-
meta exported
関数が用意されていて、metaタグ設定可能
-
TypeScriptの導入
どちらも導入できる
AMP対応
- Next.js
-
next/amp
で対応している
-
- Remix
- 現時点では非対応
※AMPについて補足
AMP(Accelerated Mobile Pages)とは、モバイル端末でWebページを高速表示するためのプロジェクトやフレームワークのことで、GoogleとTwitterが共同開発しています。
参考サイト
Discussion