成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發(fā) 前端
Next.js 14 是一個(gè)強(qiáng)大的 React 框架,它簡(jiǎn)化了構(gòu)建服務(wù)器渲染的 React 應(yīng)用程序的過程。然而,由于其先進(jìn)的功能和約定,對(duì)于開發(fā)人員,特別是剛接觸該框架的開發(fā)人員來說,可能會(huì)產(chǎn)生一些困惑和不明確的地方。

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

提示 1:處理 Next.js 圖片

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

本地圖片

對(duì)于本地圖片,你無需指定寬度和高度。Next.js 會(huì)自動(dòng)識(shí)別圖片的尺寸。你只需導(dǎo)入圖片并使用 next/image 組件進(jìn)行渲染。

遠(yuǎn)程圖片

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

為了生成遠(yuǎn)程圖片的模糊數(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í)用函數(shù)會(huì)獲取遠(yuǎn)程圖片,將其轉(zhuǎn)換為 ArrayBuffer,然后使用 placeholder 包生成 base64 表示形式。

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

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

提示 3:理解 Next.js 緩存

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

在生產(chǎn)中,你可以使用 revalidate 選項(xiàng)或顯式將頁(yè)面標(biāo)記為動(dòng)態(tài),以控制緩存。

// 每 5 秒重新驗(yàn)證
export const revalidate = 5
// 強(qiáng)制動(dòng)態(tài)渲染
export const dynamic = 'force-dynamic'

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

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

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

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:理解客戶端和服務(wù)器組件

在 Next.js 中,頁(yè)面默認(rèn)是服務(wù)器組件。你可以在服務(wù)器組件中渲染客戶端組件,以增加交互性。

"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>
  );
}

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

當(dāng)使用提供者(例如主題提供者)時(shí),在布局中使用提供者包裝子組件,子組件仍然會(huì)作為服務(wù)器組件進(jìn)行渲染。

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

總結(jié)

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

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

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

責(zé)任編輯:華軒 來源: JavaScript 每日一練
相關(guān)推薦

2022-11-07 16:25:07

JavaScript技巧

2025-03-31 00:00:02

2024-04-01 07:58:49

Next.js 14ReactWeb應(yīng)用

2024-10-11 13:17:16

Linux命令行快捷導(dǎo)航

2023-11-23 10:45:13

Next.js 14Supabase

2024-05-09 09:01:03

2024-04-28 10:56:34

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

2021-01-04 09:06:18

Next.js設(shè)計(jì)技巧

2022-10-18 16:35:51

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

2010-12-23 15:55:00

上網(wǎng)行為管理

2011-07-19 10:16:55

2011-04-02 10:13:36

Linux系統(tǒng)管理

2023-06-29 15:08:21

JavaScrip開發(fā)

2023-10-23 09:44:00

并發(fā)管理線程

2023-06-02 15:53:38

工具Python開發(fā)

2024-07-31 08:38:36

2023-10-27 15:13:12

Next.jsRust

2023-10-28 09:41:12

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

2024-02-05 11:55:41

Next.js開發(fā)URL

2024-09-20 15:37:02

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 最新日韩精品 | 91久操视频| h在线| 欧美日韩三级 | 国产男女猛烈无遮掩视频免费网站 | 狠狠操狠狠操 | 羞羞视频免费观看 | 国产精品一区二区日韩 | 成人自拍视频网站 | 国产伦精品一区二区三区高清 | 日韩一区二区三区在线视频 | 在线日韩中文字幕 | 精品欧美黑人一区二区三区 | 国产毛片毛片 | 国产精品久久7777777 | 91人人澡人人爽 | 日韩中文一区二区三区 | 日韩不卡一二区 | 国产精品有限公司 | 91色综合| 久久精品网 | 国产日韩一区二区三免费 | 91精品国产一区二区三区 | 日韩福利 | 欧美一区二区三区在线视频 | 337p日本欧洲亚洲大胆精蜜臀 | 天堂色综合 | 美人の美乳で授乳プレイ | 国产一区久久 | 999在线精品| 一级毛片视频 | 日韩视频在线播放 | 亚洲欧美在线观看 | 91在线观看 | 日本一区二区三区免费观看 | 亚洲精品久久视频 | 午夜精品久久久久久久久久久久久 | caoporn免费在线视频 | 免费黄色在线 | 日本天堂一区二区 | 国产在线一区二区三区 |