visible true

技術的なメモを書く

Next.js全部読む 2 (~2.0.0-beta.0)

Custom Document Support

2016/12/17 https://github.com/vercel/next.js/commit/8ddafaea5c1544f713bb0118b78055585b37e1e3#diff-dc3c27fcfe133615dd2b43df0b2da03e1ed23a7a03d17e86ae20f73ef20bc697R20

pages/_ducument.jsにファイルを置くとそっちを使うように。babelでビルドするタイミングでファイルの存在を見ています。 この変更まではデフォルトのDocumentコンポーネントしか使えず、CSSnext/css一択だったようです。 カスタムした_ducument.jsを使うことで、任意のCSSを使えるようになりました。

Programmatic API

2016/12/17 https://github.com/vercel/next.js/commit/1708222381788060e79de8f343ae2d8670865380

next.js/server/index.jsのServerクラスをexportし、それを用いて任意のNodeアプリケーションを実装できるようになりました。

元々のnext startも以下のようにnodeでServerを起動しているので、このあたりの挙動に手を入れたい場合にカスタムできるようになりました。

const srv = new Server({ dir })
srv.start(argv.port)
.then(() => {
  if (!process.env.NOW) {
    console.log(`> Ready on http://localhost:${argv.port}`)
  }
})
.catch((err) => {
  console.error(err)
  process.exit(1)
})

Implement the Singleton Router API

2016/12/19 https://github.com/vercel/next.js/commit/22776c2eeeca2696b78f38f067aa90af8472a9e1

next/routerがexportされ、アプリケーション側で使えるようになりました。現在だとuseRouterが一般的ですが、このころはimportしてRouter.push()とかいう風に書きます。

その他

現在だと_documentとかrouterとか普通に使ってるけど最初は無かったんだよな〜と。当たり前ではあるんだけど、歴史的経緯みたいな感じがして面白い。