-
Notifications
You must be signed in to change notification settings - Fork 14
(三十二)资源懒加载
阿峰 edited this page May 30, 2023
·
1 revision
像react,vue等单页应用打包默认会打包到一个js文件中,虽然使用代码分割可以把
node_modules
模块和公共模块分离,但页面初始加载还是会把整个项目的代码下载下来,其实只需要公共资源和当前页面的资源就可以了,其他页面资源可以等使用到的时候再加载,可以有效提升首屏加载速度。
webpack默认支持资源懒加载,只需要引入资源使用import语法来引入资源,webpack打包的时候就会自动打包为单独的资源文件,等使用到的时候动态加载。
- 以懒加载组件和css为例,新建懒加载组件src/components/LazyDemo.tsx
import React from "react";
function LazyDemo() {
return <h3>我是懒加载组件组件</h3>
}
export default LazyDemo
- 修改App.tsx
import React, { lazy, Suspense, useState } from 'react'
const LazyDemo = lazy(() => import('@/components/LazyDemo')) // 使用import语法配合react的Lazy动态引入资源
function App() {
const [ show, setShow ] = useState(false)
// 点击事件中动态引入css, 设置show为true
const onClick = () => {
import('./app.css')
setShow(true)
}
return (
<>
<h2 onClick={onClick}>展示</h2>
{/* show为true时加载LazyDemo组件 */}
{ show && <Suspense fallback={null}><LazyDemo /></Suspense> }
</>
)
}
export default App
点击展示文字时,才会动态加载app.css和LazyDemo组件的资源。