Mit der Veröffentlichung des Next.js App Routers möchten viele Entwickler ihre bestehenden Projekte unbedingt migrieren. In diesem Beitrag teile ich meine Erfahrungen bei der Migration eines Projekts zum Next.js App Router, einschließlich der wichtigsten Herausforderungen, Änderungen und wie Sie den Prozess reibungsloser gestalten können.
Es handelt sich um einen inkrementellen Ansatz, Sie können den Page-Router und den App-Router gleichzeitig verwenden.
Der App Router bietet mehrere Vorteile:
Durch die Migration können Sie Ihre Anwendung zukunftssicher machen, um die neuesten Next.js-Funktionen zu nutzen.
Der erste Schritt besteht darin, sicherzustellen, dass Ihre Next.js und die zugehörigen Abhängigkeiten auf dem neuesten Stand sind. Führen Sie die folgenden Befehle aus, um die neuesten Versionen von Next.js und React zu installieren:
npm install next@latest react@latest react-dom@latest npm install -D eslint-config-next@latest
Der App Router nutzt das neue App-Verzeichnis für die Verwaltung von Routen, Metadaten und Layouts. So strukturieren Sie es:
App-Ordner: Verschieben Sie Ihre Seiten in den App-Ordner. Jede Route verfügt jetzt über einen eigenen Ordner, der eine page.tsx-Datei enthält.
Layouts: Fügen Sie eine Datei „layout.tsx“ hinzu, um Layouts für bestimmte Abschnitte Ihrer App zu definieren. Dies ist besonders nützlich für den Umgang mit gemeinsam genutzten Komponenten wie Navigationsleisten oder Fußzeilen.
Eine der bedeutendsten Änderungen ist die Ersetzung von next/router durch next/navigation für Routing- und Navigationsfunktionen.
Ersetzen Sie alle Next/Router-Importe durch Next/Navigation.
Aktualisieren Sie Funktionen wie useRouter gegebenenfalls mit neuen Entsprechungen, z. B. usePathname, useSearchParams und useRouter().
getServerSideProps und getStaticProps sind im App Router veraltet.
Verwenden Sie asynchrone Serverkomponenten oder Serveraktionen zum Datenabruf auf serverseitigen Seiten.
export async function getData() { const res = await fetch('https://getData.com/data'); return res.json(); }
Client-Komponenten:
Jede Komponente, die React-Hooks, Browser-APIs oder Benutzerinteraktionen verwendet, muss mit „Client verwenden“ gekennzeichnet sein. Dadurch wird Next.js angewiesen, sie auf der Clientseite zu rendern.
Serverkomponenten:
Jede Komponente, die keine Interaktion mit dem Browser erfordert, kann als Serverkomponente verbleiben. Diese sind effizienter, da sie den Versand unnötigen JavaScripts an den Client vermeiden.
Wenn Sie externe Bibliotheken wie React Query, AntDesign oder Framer usw. verwenden, müssen Sie diese aktualisieren und bei Bedarf Änderungen vornehmen. Es können nicht alle Änderungen in diesem Blog berücksichtigt werden. Obwohl Änderungen in ihrer Dokumentation erwähnt werden.
Mit dem Wechsel von „next/router“ zu „next/navigation“ erfordert die Behandlung von Router-Ereignissen möglicherweise einen anderen Ansatz.
Stellen Sie sicher, dass Sie alle Router-Ereignis-Listener oder Hooks entsprechend aktualisieren.
Beim Migrieren von Seiten mit komplexen Layouts (insbesondere solchen mit Animationen) stellen Sie möglicherweise Layoutverschiebungen fest. Fügen Sie einen Platzhalter hinzu oder achten Sie auf die korrekte Ausrichtung auf der Serverseite selbst, um Layoutverschiebungen zu verhindern.
Der App Router führt Änderungen an den Bild- und Linkkomponenten ein.
Verwenden Sie Codemods, um Komponenten automatisch zu aktualisieren.
Entfernen Sie für die Bildkomponente veraltete Attribute wie „responsive“.
Animationsbezogene Komponenten wie Framer-, Swiper- und Lootie-Dateien müssen auf der Clientseite aufbewahrt werden.
Die Migration zum Next.js App Router bringt Herausforderungen mit sich, bringt aber auch erhebliche Verbesserungen bei Leistung, Skalierbarkeit und Flexibilität mit sich. Durch die Unterteilung der Migration in überschaubare Abschnitte (App-Ebene, Seitenebene und Funktionsaktualisierungen) konnte ich jede Änderung systematisch angehen.
Lassen Sie mich wissen, wenn Sie Fragen oder Tipps zu Ihren eigenen Migrationen haben!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3