通過 Next.js 面試指南:成功的 100 個問題和答案,釋放您掌握 Next.js 的全部潛力? 。無論您是剛開始作為開發人員,還是希望將自己的技能提升到新水平的經驗豐富的專業人士,這本綜合電子書都旨在幫助您在Next.js 面試中取得好成績,並成為一名自信的、做好工作準備的人開發商。本指南涵蓋了廣泛的 Next.js 主題,確保您為可能遇到的任何問題做好充分準備。這本電子書探討了伺服器端渲染 (SSR)、靜態網站產生 (SSG) 等關鍵概念) ?、增量靜態再生 (ISR) ⏳、應用程式路由器 ?️、資料擷取 ? 等等。每個主題都得到了透徹的解釋,提供了真實的例子和最常見面試問題的詳細答案。除了回答問題之外,該指南還重點介紹了優化 Next.js 應用程式、提高效能並確保可擴展性的最佳實踐。隨著 Next.js 的不斷發展,我們也深入研究了 React 18、並發渲染和 Suspense 等尖端功能。這可以確保您始終了解最新進展,為您提供面試官正在尋找的知識。本指南的與眾不同之處在於它的實用方法。它不僅涵蓋理論,還提供可直接應用於您的專案的可行見解。也詳細探討了安全性、SEO 最佳化和部署實踐,以確保您為完整的開發生命週期做好準備。無論您是在準備頂級科技公司的技術面試還是尋求建立更有效率的系統,可擴展的應用程序,本指南將幫助您提高 Next.js 技能並在競爭中脫穎而出。讀完本書後,您將準備好自信地解決任何 Next.js 面試問題,從基本概念到專家級挑戰。為自己配備知識,成為出色的 Next.js 開發人員?並自信地踏入下一個職業機會!
Next.js 可讓您透過 next.config.js 以及 getServerSideProps 或 API 路由中的自訂標頭控制靜態資源、動態路由和 API 路由的快取標頭。
靜態資源:Next.js 自動處理 public/ 資料夾中靜態資源的緩存,但您可以使用 next.config.js 中的 headers() 自訂快取標頭。
module.exports = { async headers() { return [ { source: '/(.*)', headers: [ { key: 'Cache-Control', value: 'public, max-age=31536000, immutable', }, ], }, ]; }, };
動態頁面:對於執行階段產生的動態頁面,可以在 getServerSideProps 函數中設定快取頭。
export async function getServerSideProps() { const res = await fetch('<https:>'); const data = await res.json(); return { props: { data }, headers: { 'Cache-Control': 'public, max-age=60, stale-while-revalidate=30', }, }; } </https:>
API 路由:您可以在 API 路由中設定快取標頭來控制回應的快取方式。
export default function handler(req, res) { res.setHeader('Cache-Control', 'public, max-age=3600, s-maxage=3600'); res.json({ data: 'example' }); }
測試 Next.js 應用程式涉及使用 Jest、React 測試庫和 Cypress 等工具進行端到端測試。
單元測試:使用Jest和React測試庫測試元件和鉤子。
npm install --save-dev jest @testing-library/react @testing-library/jest-dom
API 路由測試:要測試 API 路由,您可以使用 supertest。
npm install --save-dev supertest
範例:
import request from 'supertest'; import app from './pages/api/hello'; describe('GET /api/hello', () => { it('should return a 200 status code', async () => { const response = await request(app).get('/api/hello'); expect(response.status).toBe(200); }); });
端到端測試:使用Cypress測試完整的使用者互動。
npm install --save-dev cypress
範例:
describe('Home Page', () => { it('should load correctly', () => { cy.visit('/'); cy.contains('Welcome'); }); });
引入App Router是為了增強靈活性並簡化路由。透過 App Router,Next.js 可以在大型應用程式中實現更好的結構和自訂。 App Router 為佈局、巢狀路由等進階路由功能提供更好的支援。
app/ 目錄與 Next.js 13 及更高版本中的 App Router 一起使用。它允許更靈活的路由,包括對佈局、嵌套路由和並行路由的支援。 pages/ 目錄用於較舊的 Pages Router,其中路由直接由檔案結構定義。
App Router 中基於檔案的路由允許:
在 Next.js 中,伺服器元件 和 客戶端元件 有不同的用途,在它們之間進行選擇取決於用例:
在 Next.js 的 App Router 中,可以使用 'use client' 指令將元件宣告為 客戶端元件。該指令必須放置在文件頂部、任何匯入或程式碼之前,以指示該元件應被視為客戶端元件。
範例:
module.exports = { async headers() { return [ { source: '/(.*)', headers: [ { key: 'Cache-Control', value: 'public, max-age=31536000, immutable', }, ], }, ]; }, };
伺服器元件提供了與效能和可擴充性相關的多項優勢:
以上是Next.js 面試掌握:基本問題(第 8 部分)的詳細內容。更多資訊請關注PHP中文網其他相關文章!