Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Next.jsで開発を始める前に知っておくと良さそうなこと

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for hiro hiro
July 18, 2022

 Next.jsで開発を始める前に知っておくと良さそうなこと

Next.js を業務で触ったことのない人に向けて社内勉強会をしたときの資料。

Avatar for hiro

hiro

July 18, 2022
Tweet

More Decks by hiro

Other Decks in Programming

Transcript

  1. • この資料の対象者 ◦ これから Next.js に触れようとしている人 ▪ 情報過多にならないようにあえて省いている情報もある • この資料で伝えたいこと

    ◦ Next.js での開発をスムーズに始められる情報の提供 ▪ プレーンな環境の構築方法(セットアップ) • プロダクトから学びづらい部分を学べる環境 ▪ ページの作り方(ファイルベースルーティング) ▪ 事前レンダリング (モダンフロントエンド開発で知っておくべき情報) まず、はじめに
  2. 以下のような理由で Next.js を選定している。 • Next.js がフレームワークとしての完成度が高い ◦ 車輪の再発明が不要なため、開発・保守工数を減らせる(開発効率⤴) ◦ React、TypeScript

    との親和性も良い ◦ デファクトスタンダード化しつつあり、資料が豊富にある • 旧環境の React の資産が活かしやすい • 社内的に Next.js の採用事例も増えており、社内でナレッジの共有ができる なぜ、Next.js を使うのか
  3. セットアップ - 手順 - 3. 必要なファイルの生成とモジュー ルのインストールが完了する。 左記は作成されたファイル一覧。 . ├──

    .eslintrc.json ├── .gitignore ├── .next ├── README.md ├── next-env.d.ts ├── next.config.js ├── package-lock.json ├── package.json ├── pages │ ├── _app.tsx │ ├── about.js │ ├── api │ │ └── hello.ts │ └── index.tsx ├── public │ ├── favicon.ico │ └── vercel.svg ├── styles │ ├── Home.module.css │ └── globals.css └── tsconfig.json
  4. ├── pages 👈 このディレクトリ │ ├── _app.tsx 👈 特別なファイル │

    ├── about.js │ ├── api 👈 APIルート │ │ └── hello.ts │ └── index.tsx Next.js は、pagesディレクトリ内に配置した React コンポーネント(.js, .jsx, .ts, .tsx ファイル)によって、ルーティングが決定する。 (ただし、 pages/api は API ルートと呼ばれておりこの限りではない) ファイルベースルーティング
  5. ネストされたディレクトリ構造も同じようにルーティングされる。 ファイルベースルーティング - ネストルート - ファイル パス URL pages/posts/first-post.jsx /posts/first-post

    http://localhost:3000/posts/firs t-post pages/dashboard/settings/userna me.jsx /dashboard/settings/usernam e http://localhost:3000/dashboa rd/settings/username
  6. ブラケット記法で記述した場合、名前をつけたパラメータとマッチして、動的なルー ティングを実現できる。 ファイルベースルーティング - 動的なルートセグメント - ファイル パス URL pages/blog/[slug].jsx

    /blog/:slug (/blog/hello-world) ※ slug が hello-world の場合 http://localhost:3000/blog/hell o-world pages/[username]/settings.jsx /:username/settings (/foo/settings) ※ username が foo の場合 http://localhost:3000/dashboa rd/settings/username この資料での詳しい説明は割愛
  7. 事前レンダリングとは、各ページの HTML をクライアントサイドの JavaScript でレ ンダリングするのではなく、サーバサイドの JavaScript で事前に生成しておくことを 指す。 Next.js

    には、SG(Static Generation)と SSR(Server-side Rendering)の 2 つ の事前レンダリング形式がある。 これらの違いは、ページの HTML を生成するタイミング。 • SG(Static Generation): ビルド時に HTML を生成する • SSR(Server-side Rendering): リクエストごとに HTML を生成する 事前レンダリングとは
  8. > We recommend using Static Generation (with and without data)

    whenever possible because your page can be built once and served by CDN, which makes it much faster than having a server render the page on every request. > https://nextjs.org/learn/basics/data-fetching/two-forms Next.js としては、パフォーマンスの観点から可能な限り SG を使用することを推奨し ている。 SG: Static Generation
  9. • ページをレンダリングするのに必要なデータが、ビルド時にユーザーのリクエス トよりも先に利用可能である場合 • データをヘッドレス CMS や API から取得する場合 •

    データがユーザー固有のものでなく public にキャッシュできる場合 • SEO などの理由でページを事前レンダリングする必要があり、かつ非常に高速で なければならない場合 SG: Static Generation - いつ使うべきか
  10. • Next.js を使う理由 ◦ 昨今のフロントエンド開発のベストプラクティスを享受するため • セットアップと開発手順 ◦ Next.js は、

    create-next-app で簡単に自動セットアップできる ◦ サンドボックスとして活用していこう • ファイルベースルーティング ◦ Next.js は、pagesディレクトリに配置したファイルで決定する • 事前レンダリング ◦ Next.js には、2つの事前レンダリング方式がある ◦ レンダリング方式(SG と SSR)の特性を理解して使う必要がある まとめ