自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

五個讓你使用 Next.js 14 更輕松的技巧與提示

開發(fā) 前端
Next.js 14 是一個強大的 React 框架,它簡化了構建服務器渲染的 React 應用程序的過程。然而,由于其先進的功能和約定,對于開發(fā)人員,特別是剛接觸該框架的開發(fā)人員來說,可能會產生一些困惑和不明確的地方。

Next.js 14 是一個強大的 React 框架,它簡化了構建服務器渲染的 React 應用程序的過程。然而,由于其先進的功能和約定,對于開發(fā)人員,特別是剛接觸該框架的開發(fā)人員來說,可能會產生一些困惑和不明確的地方。在這篇博客中,我們將探討五個技巧和提示,幫助你更輕松地使用 Next.js 14。

提示 1:處理 Next.js 圖片

圖片處理是 Next.js 中一個常見的困惑點。根據(jù)你處理的是本地圖片還是遠程圖片,方法會有所不同。

本地圖片

對于本地圖片,你無需指定寬度和高度。Next.js 會自動識別圖片的尺寸。你只需導入圖片并使用 next/image 組件進行渲染。

遠程圖片

對于遠程圖片,你需要提供一個模糊的占位符,并指定寬度和高度以防止布局偏移。你可以使用 placeholder="blur" 屬性,在圖片完全加載之前顯示模糊版本。

為了生成遠程圖片的模糊數(shù)據(jù) URL,你可以使用 sharp 和 placeholder 包:

import Image from "next/image";
import getBase64 from "./utils/getBase64";
export default async function MyComponent() {
  const blurDataUrl = await getBase64(remoteImageUrl);
  return (
    <Image
      src={remoteImageUrl}
      width={600}
      height={600}
      alt="Remote Image"
      placeholder="blur"
      blurDataURL={blurDataUrl}
    />
  );
}

getBase64 實用函數(shù)會獲取遠程圖片,將其轉換為 ArrayBuffer,然后使用 placeholder 包生成 base64 表示形式。

提示 2:處理環(huán)境變量

在標記環(huán)境變量時要小心,next.config.env.NEXT_PUBLIC_* 前綴的變量會暴露在瀏覽器中,并被包含在 JavaScript 包中。如果你有敏感的 API 密鑰或機密信息,確保不要為它們添加 NEXT_PUBLIC_ 前綴,這樣它們只會在 Node.js 環(huán)境中可用。

提示 3:理解 Next.js 緩存

Next.js 在開發(fā)環(huán)境和生產環(huán)境中的緩存行為不同。在開發(fā)模式下,頁面會默認在每次請求時動態(tài)渲染。而在生產模式下,Next.js 會嘗試靜態(tài)渲染頁面。

在生產中,你可以使用 revalidate 選項或顯式將頁面標記為動態(tài),以控制緩存。

// 每 5 秒重新驗證
export const revalidate = 5
// 強制動態(tài)渲染
export const dynamic = 'force-dynamic'

提示 4:在服務器組件中獲取數(shù)據(jù)

避免僅僅使用 API 路由處理器來獲取服務器組件中的數(shù)據(jù)。相反,直接在服務器組件中獲取數(shù)據(jù)。這種方法允許 Next.js 優(yōu)化緩存并在多個服務器組件之間重用數(shù)據(jù)。

如果你需要在多個組件之間重用相同的獲取邏輯,可以考慮在 server/ 目錄中創(chuàng)建一個服務器操作。

export async function getJoke() {
  const res = await fetch("https://api.example.com/joke");
  const data = await res.json();
  if (res.ok) {
    return { success: true, joke: data.joke };
  } else {
    return { error: data.error };
  }
}
// app/page.jsx
import { getJoke } from "../server/actions";
export default async function Page() {
  const { success, joke, error } = await getJoke();
  if (success) {
    return <div>{joke}</div>;
  } else {
    throw new Error(error);
  }
}

提示 5:理解客戶端和服務器組件

在 Next.js 中,頁面默認是服務器組件。你可以在服務器組件中渲染客戶端組件,以增加交互性。

"use client";
import { useState } from "react";
export default function ClientComponent() {
  const [count, setCount] = useState(0);
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

在客戶端組件中渲染的子組件會自動成為客戶端組件,無需再添加 ’use client’ 指令。

當使用提供者(例如主題提供者)時,在布局中使用提供者包裝子組件,子組件仍然會作為服務器組件進行渲染。

// app/layout.jsx
import { ThemeProvider } from "your-theme-library";
export default function RootLayout({ children }) {
  return <ThemeProvider>{children}</ThemeProvider>;
}

總結

Next.js 14 是一個功能強大且豐富的框架,它簡化了服務器渲染的 React 應用程序的開發(fā)。雖然它引入了一些新概念和約定,但按照這篇博客中的提示和技巧操作,可以幫助你順利度過可能遇到的困惑和不明確的地方。

通過理解如何處理圖片、管理環(huán)境變量、控制緩存、在服務器組件中獲取數(shù)據(jù)以及區(qū)分客戶端和服務器組件,你將更好地構建強大高效的 Next.js 14 應用程序。

記住,實踐和經驗是掌握任何新技術的關鍵。不要猶豫,探索 Next.js 文檔、加入社區(qū)論壇,并通過框架的功能進行實驗,以進一步鞏固你的理解。

責任編輯:華軒 來源: JavaScript 每日一練
相關推薦

2022-11-07 16:25:07

JavaScript技巧

2024-10-11 13:17:16

Linux命令行快捷導航

2025-03-31 00:00:02

2024-04-01 07:58:49

Next.js 14ReactWeb應用

2023-11-23 10:45:13

Next.js 14Supabase

2021-01-04 09:06:18

Next.js設計技巧

2022-10-18 16:35:51

JavaScrip數(shù)組參數(shù)

2024-05-09 09:01:03

2024-04-28 10:56:34

Next.jsWeb應用搜索引擎優(yōu)化

2010-12-23 15:55:00

上網行為管理

2011-04-02 10:13:36

Linux系統(tǒng)管理

2011-07-19 10:16:55

2023-06-29 15:08:21

JavaScrip開發(fā)

2023-10-23 09:44:00

并發(fā)管理線程

2023-06-02 15:53:38

工具Python開發(fā)

2023-10-27 15:13:12

Next.jsRust

2024-07-31 08:38:36

2023-10-28 09:41:12

Next.js函數(shù)配置選項

2015-11-05 08:59:19

編程Visual Stud擴展

2020-06-28 16:07:03

HomebrewMacLinux
點贊
收藏

51CTO技術棧公眾號