Capítulo 339 de 456
Guia de upgrade de Next.js 8 para 9: introduz pages/api/ como API Routes, exporta config como configuração de página, e remove diversas APIs legadas (@zeit/next-typescript, withAmp, comportamento de next/dynamic).
pages/api/: passa a ser tratado como API Routes; arquivos nesse diretório não geram mais bundle client-side.export const config: nome de export reservado para configuração de página (AMP opt-in, API Routes); não pode mais ser usado para outro propósito.next/dynamic loading behavior: para de renderizar "loading..." por default; customizável via propriedade loading.withAmp removido: substituído por export const config = { amp: true }.next export sem index.html: pages/about.js exporta para out/about.html em vez de out/about/index.html (reversível com trailingSlash: true).@zeit/next-typescript não é mais necessário; tipos publicados junto com next, @types/next deve ser desinstalado.config reservado para page-level config.next/dynamic não renderiza "loading..." por default.withAmp HOC removido, substituído por page config export.next export muda formato de output de arquivos.pages/api/ vira API Routes dedicado.next/dynamic (aproximando de React.lazy/Suspense).import dynamic from 'next/dynamic'
const DynamicComponentWithCustomLoading = dynamic(
() => import('../components/hello2'),
{
loading: () => <p>Loading</p>,
}
)
// Before
import { withAmp } from 'next/amp'
function Home() {
return <h1>My AMP Page</h1>
}
export default withAmp(Home)
// After
export default function Home() {
return <h1>My AMP Page</h1>
}
export const config = {
amp: true,
}
withAmp HOC para a export config reservada.| Import antigo | Import novo (v9) |
|---|---|
NextContext (next) | NextPageContext |
NextAppContext, DefaultAppIProps (next/app) | AppContext, AppInitialProps |
NextDocumentContext, DefaultDocumentIProps (next/document) | DocumentContext, DocumentInitialProps |
config para outro propósito não-Next.js: colide com a nova config reservada da página; renomear.@types/next instalado: conflita com os tipos agora publicados dentro do próprio pacote next.next/dynamic: deprecated; migrar para múltiplas chamadas dynamic() individuais, uma por componente.pages/api/ como API Routes é a mudança mais duradoura desta versão, ainda central no Pages Router.getInitialProps vazio herdado de exemplos antigos de _app.js pode ser removido com segurança nesta versão.add-missing-react-import, withamp-to-config, name-default-component e url-to-withrouter cobrem migrações mecânicas relacionadas a este período.withamp-to-config, name-default-component.