1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Next.jsのチュートリアル読んで感動したこと

Posted at

Next.js公式読んだ
https://nextjs.org/

Next.js?

reactでwebアプリケーション作るとなると色々考えないといけないけど、これらを簡単にしてくれるのがnext.js

・Code has to be bundled using a bundler like webpack and transformed using a compiler like Babel.
・You need to do production optimizations such as code splitting.
・You might want to statically pre-render some pages for performance and SEO. You might also want to use server-side rendering or client-side rendering.
・You might have to write some server-side code to connect your React app to your data store.

具体だと、こんな機能を提供する。

・An intuitive page-based routing system (with support for dynamic routes)
・Pre-rendering, both static generation (SSG) and server-side rendering (SSR) are supported on a per-page basis
・Automatic code splitting for faster page loads
・Client-side routing with optimized prefetching
・Built-in CSS and Sass support, and support for any CSS-in-JS library
・Development environment with Fast Refresh support
・API routes to build API endpoints with Serverless Functions
Fully extendable

感動したこと

Routing

pages配下にファイルを置くだけでそれがURL pathになる。
routingライブラリいらない。

Client-Side Navigation

Linkタグ使えば、
クライアントサイドナビゲーションが可能。ブラウザのページ遷移より速い。
リンク先のページのコードをバックグラウンドでプリフェッチ。

Image Optimization

next/image がデフォルトで画像最適化してくれるようになってる。
自動で、ブラウザがサポートしているモダンな画像フォーマットにしてくれる。最近だとWebPとか。

Pre-rendering

デフォルトでプリレンダリングしてくれる。あらかじめHTML作っておく。
パフォーマンスとSEO観点で良いこと。
ブラウザでJS無効にしてもページが表示される。

Two Forms of Pre-rendering

プリレンダリングに2つ形式がある。
Static Generation と Server-side Rendering
この二つの形式をページごとに使い分けることができる。

Static Generation

名前の通り静的なページで使うと良い。
ブログとかヘルプとかドキュメントとか。

データ取得してから表示したいページだったら、getStaticPropsを使う。
これを使うと。「ヘイ! このページはいくつか依存しているデータがあるから、プリレンダーするときに解決しといて」とnext.jsに伝えることができる。
ここに書いたコードはサーバーサイド内で実行されるから、DBに投げるクエリを書いちゃっても大丈夫。
本番環境だと、ビルド時にしか実行されないから、頻繁に更新があったり、リクエストごとに変わったりするページには不向き。
代わりに、Server-side Rendering使うと良い。

Server-side Rendering

ビルド時ではなく、リクエストごとにデータを取得したい時に使う。その分遅くはなる。
getServerSideProps使ってその中に処理書けばok。
useEffectみたいな感じ?

SWR

データフェッチ用の React フック
めちゃ簡単に書けそう。
Client-side Renderingでよいなら、これを使うのを強くお勧めしている。

API Routes

API Routesをサポートしている。
ただし、getStaticPropsからAPI Routes呼び出すな。処理を直接書け。
フォームの登録処理APIとかはいい使用例。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?