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

面試官:Next.js 中的 next/dynamic 有什么作用?如何使用它

開發 前端
??next/dynamic?? 是 Next.js 提供的動態導入(Lazy Loading)功能,用于按需加載組件,從而減少首屏 JS 體積,提高性能。

next/dynamic 是 Next.js 提供的動態導入(Lazy Loading)功能,用于按需加載組件,從而減少首屏 JS 體積,提高性能。

?? next/dynamic 的作用

減少初始 JS 體積(代碼分割,提高頁面加載速度)
按需加載組件(只有在需要時才下載 JS 代碼)
避免 SSR 渲染不支持的庫(如 window 依賴的庫)
支持自定義加載狀態(可以顯示 Loading 占位符)

?? next/dynamic 的基本用法

?? 基礎用法

import dynamic from "next/dynamic";

// 組件在客戶端加載(不會 SSR)
const HeavyComponent = dynamic(() => import("../components/HeavyComponent"), {
  ssr: false, // 關閉 SSR
});

export default function Page() {
  return <HeavyComponent />;
}

優化點

  • HeavyComponent 不會被包含在服務器渲染的 HTML 中
  • 僅在 客戶端加載,不會影響 SSR

?? 1. 懶加載大型組件

?? 適用于圖表、地圖等大型組件

import dynamic from "next/dynamic";

// 組件按需加載
const Chart = dynamic(() => import("../components/Chart"), {
  loading: () => <p>Loading...</p>, // ? 加載時顯示占位符
});

export default function Page() {
  return <Chart />;
}

優化點

  • Chart 組件不會影響首屏加載
  • 只有用戶訪問該頁面時才會加載

?? 2. 關閉 SSR,避免 window 相關錯誤

?? 某些第三方庫(如 mapbox-gl)只在客戶端運行

import dynamic from "next/dynamic";

// 關閉 SSR,避免 `window is not defined` 錯誤
const Map = dynamic(() => import("../components/Map"), { ssr: false });

export default function Page() {
  return <Map />;
}

優化點

  • 避免 window is not defined 錯誤
  • 適用于僅在客戶端運行的庫

?? 3. 僅在事件觸發時加載

?? 避免不必要的加載

import { useState } from "react";
import dynamic from "next/dynamic";

const HeavyComponent = dynamic(() => import("../components/HeavyComponent"));

export default function Page() {
  const [show, setShow] = useState(false);

  return (
    <div>
      <button onClick={() => setShow(true)}>顯示組件</button>
      {show && <HeavyComponent />}
    </div>
  );
}

優化點

  • 只有用戶點擊按鈕時才加載 HeavyComponent
  • 減少初始加載時間

?? 4. dynamic() 配合 import() 進行代碼拆分

?? 按需加載模塊

async function handleClick() {
  const { someFunction } = await import("../utils/heavyFunctions");
  someFunction();
}

優化點

  • 僅在需要時加載模塊
  • 避免影響主 JS 體積

?? 總結

用法

適用場景

優化點

默認動態導入

組件懶加載

? 只在需要時加載

SSR 關閉

 (ssr: false)

依賴 window 的庫

? 避免 window is not defined 錯誤

自定義加載狀態

顯示 Loading UI

? 提升用戶體驗

事件觸發加載

用戶交互后才加載

? 減少不必要的 JS

?? 一句話總結?? next/dynamic 讓 Next.js 組件支持懶加載,減少 JS 體積,優化頁面性能! 

責任編輯:武曉燕 來源: 大遷世界
相關推薦

2025-03-05 00:02:00

Next.jsExpress.jAPI 路由

2024-12-13 08:37:32

2025-01-26 07:10:00

Web 應用Next.js代碼分割

2025-03-17 03:00:00

2021-07-06 07:27:45

React元素屬性

2024-11-25 07:39:48

2025-02-05 07:00:00

Next.jsWeb前端

2025-03-06 00:00:00

2025-02-03 00:00:35

2025-03-19 08:06:31

2025-03-21 00:05:00

2025-03-31 00:00:00

?增量靜態再生Next.jsISR

2024-09-20 15:37:02

2024-05-09 09:01:03

2024-04-28 10:56:34

Next.jsWeb應用搜索引擎優化

2024-09-04 10:27:53

2023-03-21 08:02:34

架構React服務器

2023-09-04 08:20:00

2024-07-19 10:03:29

2025-01-17 09:29:42

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线国产一区二区 | 一本一道久久a久久精品综合蜜臀 | 男女视频免费 | 成人欧美一区二区三区黑人孕妇 | 日韩精品在线观看一区二区三区 | 一区二区国产在线 | 亚洲福利在线观看 | 成人免费看电影 | 国产精品免费在线 | 九九久久这里只有精品 | 欧美在线天堂 | 国产乱精品一区二区三区 | 亚洲第一天堂 | 毛片网站在线观看 | 国产乱码精品一区二区三区五月婷 | 久久伊人操 | 逼逼网| 日本天天操 | 精品一区二区三 | 国产午夜在线 | 午夜精品视频一区 | 九九伦理片| 成人一级黄色毛片 | 欧美成人一区二区 | 欧美性猛交 | 一区二区免费视频 | 99re在线视频免费观看 | 精品久久久久久亚洲精品 | 国产精品乱码一区二三区小蝌蚪 | 日本福利在线观看 | 久久久久国产一区二区三区 | 91久久精品国产91久久性色tv | av午夜激情| 射欧美| 91电影| 国产欧美在线观看 | 亚洲精品9999 | 自拍偷拍第一页 | 狠狠干av| 精品久久国产 | 男人午夜视频 |