概要
さっきこれを読んだ。
Next.js 9が出るんだって!嬉しい〜!
目玉要素
TypeScriptが設定なしでビルトインで使える
TypeScriptを使えば型チェックができるため、アプリケーションの信頼性が増す。Next.js 9はTypeScriptのtsxをおけば自動でTypeScriptサポートするようになった。
ファイル構成でダイナミックルートを構築できる
カスタムサーバーを別に用意する必要なく、Next単体でダイナミックルーティングができるようになったので、複雑なアプリケーションが作りやすくなった。今までは、ダイナミックルーティングをしようと思うならば、exampleのcustom-server-ナンチャラ、例えばcustom-server-expressなりを参考に、サーバのミドルウェアとしてNextを走らせる必要があった分だいぶラクになった。
静的配信における自動最適化
SSRと静的プレレンダリングを勝手に組み合わせて*ultra-fast[ママ]*なウェブサイトを作れるようになった。
API Routes
Quickly build back-end application endpoints, leveraging hot-reloading and a unified build-pipeline.
なんやpages/
配下に、api
ディレクトリを作ることで簡単にバックエンドアプリケーション用のエンドポイントを作れるようになったらしい。まだ試していない。
プロダクション環境におけるさらなる最適化
viewportプレフェッチングと、その他の最適化技法を組み合わせて、アプリケーションの応答性が増したらしい。
書き心地が良くなった(Developer Experience Improvement)
慎ましやかででしゃばらないし、使い勝手良いし、簡単に開発ができる。
すぐに使いたければ
yarn add next@latest react@latest react-dom@latest
すれば良い。
アップグレードガイド
アップグレードガイドはここにある。
next/dynamic
がデフォルトで"loading..."を描画しなくなったことが破壊的変更の筆頭。
個人的に嬉しすぎるポイント
TypeScript入れるのにまごつくことがなくなった
今までNext.js
でTypeScriptを書こう思う分には、yarn add @zeit/next-typescript
して.babelrc
を作り、next.config.js
を書かねばならずで、辛気臭かった。
Next.js 9
ではNext.js
が見るところにts
なりtsx
なりを置くと自動で設定してくれる。
短絡的にいえばpages/
配下にindex.tsx
書いて、yarn next dev
すればNext.js
のデフォルトのtsconfig.json
を自動的に設定してくれる。
型を書くとIDEの補完が良く効いて、これは嬉しい。あとは、TypeScriptがある状況でNext.js
の開発サーバー(next dev
)はTypeScriptの怒られを伝えるようになってくれた。(前からそうだった気がするけど、どうだったっけ?)
備え付けのDynamic Routeが付くようになった
例えば、 pages/post/[pid].tsx
というページを作成すれば
localhost:3000/post/ホゲホゲ
localhost:3000/post/フガフガ
-
localhost:3000/post/ピヨピヨ
みたいなURLは全部、pages/post/[pid].tsx
によって描画されるページに流されるようになった。
localhost:3000/post/ホゲホゲ
からpages/post/[pid].tsx
に流された時、Next.js
のquery
オブジェクトの中に { pid: 'ホゲホゲ' }
が入るようになっている。query
オブジェクトはuseRouter()
フックの返り値router.query
に入っている。
import { useRouter } from 'next/router'
const Post:FC = () => {
const router = useRouter();
const { pid } = router.query;
return <p>{pid}から流されてきた</p>
}
export default Post
todo/[list]/[name].jsx
とかの場合は、localhost:3000/todo/ホゲホゲ/フガフガ
から流れてきたら{ list: 'ホゲホゲ',name:'フガフガ' }
といった寸法。ディレクトリ.../[huga]/
につけて、それに対応するURIをなんとかしたければ.../[huga]/index.jsx
でよしなに出来る。
ファイル名や、フォルダ名に[]という記号をつける習慣がないので、ギョッとするが、直感的で良い。
今までこんなんしようと思った日には、カスタムサーバーを立てねばならんでexpress
のroute
かくなりmicro
のmicro-router
を書かなあかなんだりで、辛気臭かったが、これからは楽チンになりそう。
Devサーバーでプレレンダリングされたら、右下に⚡︎マークのボタンが出来るようになって見た目にわかりやすくなった
最初はなんのボタンかわからずに不安になったけど。
あとは再コンパイルしている時も三角マークのボタンが出るようになった。かっこいい。秘密結社っぽさがある。
pages/api
配下に(req, res)のリクエストハンドラーを立てられそう?
今までNext.js
でAPIの何かを試そう思った時は、graphql-yoga
とかを別にlocalhost:4000
に立てて〜とかしていたが、以下の具合でpages/api/index.ts
にこんな具合でreq,resハンドラーを作れるっぽい。
export default function handle(req, res) {
res.end('Hello World')
}
これはご機嫌な話だ。またじきに試そう。
まとめ
- Next.jsもっと書きやすくなりそうね