MENU
Khsmty
よわよわプログラマー
メイン言語は TypeScript。Rust を勉強中。
アーカイブ

【保存版】Next.js と Nuxt の違いまとめ

  • URLをコピーしました!

Next.js と Nuxt は、どちらも最近人気のフロントエンドのフレームワークで、両者ともに SSR (サーバーサイドレンダリング) や SSG (静的サイトジェネレーター) などの機能を備えています。

ただ、両者ともに名前も機能も結構似ており、違いをしっかり理解していないとどちらを選ぶのが良いのか迷ってしまうかもしれません。

そこで、この記事では、Next.js と Nuxt の違いを徹底的に比較していきます。

目次

概要

スクロールできます
Next.jsNuxt
公式サイトhttps://nextjs.org/https://nuxt.com/
リポジトリhttps://github.com/vercel/next.jshttps://github.com/nuxt/nuxt
作者Guillermo RauchAlexandre Chopin, Sebastien Chopin, Pooya Parsa
開発元VercelNuxtLabs
初リリース2016/11/042018/01/09
ベースReactVue.js
最新バージョンv13.4.9v3.6.2
ライセンスMITMIT

まず、Next.js と Nuxt の最も大きな違いと言ってもいいのが、ベースのライブラリだと思います。
Next.js は React を、Nuxt は Vue.js をベースにしています。

React は Meta (旧 Facebook) が開発したライブラリで、JSX という記法で HTML (正確には JS の一部だけど) を書いていきます。
また、Hooks という機能を使って、コンポーネント内で状態管理などを行うことが可能です。React は割とシンプルで自由度が高いライブラリという印象です。

Vue は Evan You 氏が開発したライブラリで、こちらは個人開発になります。
テンプレート構文で HTML に JS を埋め込むことができます。HTML からプログラミングに入った人には親しみやすい記法で、私も最初触ったときには簡単さと使いやすさに感動した記憶があります。

また、Vue v3 より Composition API がリリースされ、コンポーネント内で状態管理などを定義することができるようになりました。Vue.js は初心者に優しいライブラリですが、その分ルールや規則が多く、設計についてはある程度決められています。

リポジトリ

スクロールできます
Next.jsNuxt
リポジトリhttps://github.com/vercel/next.jshttps://github.com/nuxt/nuxt
スター109k46.3k
フォーク24.4k4.1k
ウォッチャー1.4k0.7k
Used by1600k260k
Contributor0.5k2.7k
Issue16k12k
Pull Request16k4k
最新バージョンv13.4.9v3.6.2

ドキュメント

スクロールできます
Next.jsNuxt
ドキュメントhttps://nextjs.org/docshttps://nuxt.com/docs
チュートリアルhttps://nextjs.org/docs/getting-started/installationhttps://nuxt.com/docs/getting-started/installation
サンプルhttps://github.com/vercel/next.js/tree/canary/exampleshttps://nuxt.com/docs/examples
日本語化なしなし

どちらのドキュメントも相当丁寧に書かれており、困ったらドキュメントを見る、で大体解決すると思います。サンプルも豊富で参考になります。

Nuxt は v2 のドキュメントは日本語化されていたので、そのうち v3 のドキュメントも日本語化されるかもしれません。

実装

スクロールできます
Next.jsNuxt
ベースReactVue.js
テンプレート言語JSXvue template または JSX
プロジェクトの初期化$ npx create-next-app@latest$ npx nuxi@latest init
基本ルートapp/hoge/page.js
→ href = “/hoge”
pages/hoge.vue
→ href = “/hoge”
動的ルートapp/fuga/[id]/page.js
→ href = “/fuga/:id”
pages/fuga/[id].vue
→ href = “/fuga/:id”
変数の代入{ message }{{ message }}
イベントバインディング<button onClick={hoge}><button @click="hoge">
state の初期化const [count, setCount] = useState(1);const count = ref(1);

Next.js はプロジェクト作成時に色々と質問され、諸々のセットアップまでやってくれます。

Nuxt は v2 まではいろいろオプションを選べたんですが、v3 以降は方針が変わり、自分で lint などの設定を行う必要があります。個人的には便利だったので残念です。

ライフサイクル

スクロールできます
Next.jsNuxt
呼び出し方useEffect()onMounted() など関数で呼び出す
マウント後useEffect( , [])onMounted()
更新後useEffect()onUpdated()
破棄前useEffect(return {}, [])onUnmounted()
メソッド名getDerivedStateFromProps()
componentDidMount()
shouldComponentUpdate()
getSnapshotBeforeUpdate()
componentDidUpdate()
componentWillUnmount()
onMounted()
onUpdated()
onUnmounted()
onBeforeMount()
onBeforeUpdate()
onBeforeUnmount()
ドキュメントuseEffect – ReactComposition API: ライフサイクルフック | Vue.js

SSR (サーバーサイドレンダリング)

スクロールできます
Next.jsNuxt
SSR (HTMLをリクエスト毎に生成)getServerSideProps()asyncData()
SSG (HTMLをビルド時に生成)getStaticProps()
ページ単位の指定が可能か?〇 (v3〜)
バックエンドAPIAPI Route

トレンド

Google トレンド より

過去5年間の Next.js と Nuxt の Google 検索回数の比較です。

昔は少し Nuxt の方が話題だったようですが、最近は Next.js が圧倒的です。

ダウンロード数

npm trends より

Next.js のダウンロード数が圧倒的です。

更新頻度

やはり Next.js は企業が保守しているだけあってめちゃくちゃ開発が活発です。リリース頻度も Next.js の方が圧倒的に高いです。

Nuxt は v3 へのアップデートが何度も延期されていた (確か最終的には1年以上延期された) ことから、開発リソースが全然足りてない印象があります。

記事数

Next.jsNuxt
Zenn2,480720
Qiita2,5824,065
dev.to3,626703
Medium6.2k1.2k

全体的に Next.js が多いです。

なぜか Qiita だけは Nuxt の方が多いのが気になります。(日本人は Nuxt 使いがち?)

質問数

Next.jsNuxt
StackOverflow32,95011,902
Teratail65311,490

まとめ

この記事では Next.js と Nuxt の違いを比較してまとめてみました。フレームワーク選定の参考になれば幸いです。

※この記事に間違いなどあればコメント欄までお願いします

参考

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする


目次