React中Suspense的分包实践

首先预备目录

TypeScript 复制代码
//Footer.tsx
export const Footer = () => {
  return (
    <div>
      Footer
    </div>
  );
};
TypeScript 复制代码
// Header.tsx
export const Header = () => {
  return (
    <div>
      <h1>Header</h1>
    </div>
  );
};
TypeScript 复制代码
 // index.tsx
import { Header } from "./Header";
import { Footer } from "./Footer";
 
//因为react的更新渲染DOM是自顶向下的,若遇到异步资源,则不知道如何做,就需要用Suspense来包裹
// 包裹之后它内部的机制就会发生变化了,它内部的异步操作可以暂停,暂停等到未来内部的内容得到了结果
// 返回成功后,Suspense才会渲染包裹的组件,否则会一直渲染loading,
 

//为了做一些异步读取的事情
// sspense的1.0版本
export const SuspenseDemo = () => {
  return <div> 
     <Header /> 
     <Footer /> 
     </div>;
};

执行pnpm build打包可以看到,项目中所有tsx文件只打包到一个js中

使用Suspense,包裹异步加载的组件打包后

TypeScript 复制代码
//index.tsx

import  { lazy,Suspense } from "react"; 
// 引入可以变为动态引入
const Header = lazy(()=>
  import("./Header").then((module) => ({
    default: module.Header
  }))

);
const Footer = lazy(()=>
  import("./Footer").then((module) => ({
    default: module.Footer
  }))

);
//因为react的自顶向下的,若遇到异步资源,则不知道如何做,就需要用Suspense来包裹
// 包裹之后它内部的机制就会发生变化了,它内部的异步操作可以暂停,暂停等到未来内部的内容得到了结果
// 返回成功后,Suspense才会渲染包裹的组件,否则会一直渲染loading,

 

//为了做一些异步读取的事情
// sspense的1.0版本
export const SuspenseDemo = () => {
  return <div>
    <Suspense fallback={<div>loading...</div>}>
     <Header /> 
     <Footer />
     </Suspense>
     </div>;
};

可以看到多出了Footer和Header的js文件,因此Suspense可以起到打包优化分包的作用

TypeScript 复制代码
// App.tsx
import './App.css'
import {SuspenseDemo} from './components/3.SuspenseDemo/index.tsx'
function App() {

  return (
    <div> 
      <SuspenseDemo/>
    </div>
  )
}

export default App
相关推荐
2601_958352902 分钟前
一款模块通吃15类语音产品?AN-93如何实现录音笔、门禁、IPC的快速适配
前端·人工智能·嵌入式硬件·回声消除·降噪处理
子兮曰4 分钟前
Bun v1.4.4 实测:2,025 个文件,bun fmt 2.6 秒跑完
前端·后端·bun
Liudef064 分钟前
用 DeepSeek Search API 做一个干净的单文件搜索页面(附完整源码)
前端·人工智能·工具·搜索·deepseek
忆挽篱笙歌20 分钟前
进程替换函数与shenll命令行解释器
前端·javascript·算法
计算机魔术师22 分钟前
砸了2200亿美元还是不够用,AWS说2027年也卖完了
前端
2601_9653053922 分钟前
智慧农用的农业四情分别是什么
服务器·前端·人工智能
老徐聊GEO36 分钟前
把“安徽“写进题面之后:多平台AI推荐名单的区域扰动测量(2026)
前端·人工智能·算法·geo优化
moshuying1 小时前
DeppInfer系列之 - 矩阵、注意力与 GPU:拆解 DeepGEMM 与 FlashMLA
前端·javascript·面试
燕落南枝1 小时前
CSS 分组选择器与链接伪类选择器详解
前端·css
其实防守也摸鱼2 小时前
网络安全法竞赛知识总结与题库
前端·网络·人工智能·安全·web安全·重构·nc