首页 > 其他分享 >React — 打包优化

React — 打包优化

时间:2024-03-14 17:44:05浏览次数:21  
标签:react lazy const CDN js React path 优化 打包

1.路由懒加载:

(1)说明

路由懒加载是指路由的JS资源只有在被访问的时候才会被动态获取,是为了优化项目首次打开的时间。

(2)配置

  • 把路由修改为由React提供的lazy函数进行动态导入
import {Suspense, lazy} from 'react'

//lazy函数对组件进行导入
const Board = lazy(()=>import('@/page/Board'))
const About = lazy(()=>import('@/page/About'))
  • 使用React内置的Suspense组件包裹路由中的element选项对应的组件
const router = createBrowserRouter([
    {
        path : '/',
        element : <Layout></Layout>,
        children :[{
            index:true,
            element : <Suspense fallback={'load'}><Board></Board></Suspense>
        },
        {
            path : '/about',
            element : <Suspense fallback={'load'}><About></About></Suspense>
        }]
    },
])

2.包体积可视化分析

(1)下载依赖包

 

npm i source-map-explorer

 

(2)配置命令  package.json

"scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "analyze" : "source-map-explorer 'build/static/js/*.js'"
  },

3.CDN优化

(1)说明:CDN是一种内容分发网络服务,当用户请求网站内容时,由离用户最近的服务器将缓存的资源内容传递给用户

(2)哪些资源可以放到CDN服务器?

  • 体积比较大的非业务JS 文件,比如react、react-dom,需要利用CDN文件在浏览器的缓存特性,加快加载时间
  • 非业务JS,不需要经常做变动,CDN不用频繁更新

(3)优化操作

  • 把需要做CDN缓存的文件排除在打包之外
  • 以CDN的方式重新引入资源
const path = require('path')
const {whenProd,getPlugin,pluginByName} = require('@craco/craco')
// const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    webpack : {
        alias : { //别名配置
            '@' : path.resolve(__dirname,'src')
        }
    },
    //配置webpack
    configure : (webpackConfig)=>{
        let cdn;
        whenProd(()=>{
            webpackConfig.externals = {
                react : 'React',
                'react-dom' : 'ReactDOM'
            }
            cdn = {
                js : [
                    'https://unpkg.com/react@latest/umd/react.development.js',
                    'https://unpkg.com/react-dom@latest/umd/react-dom.development.js'
                ]
            }
        })
        const {isFound,match} = getPlugin(
            webpackConfig,
            pluginByName('HtmlWebpackPlugin')
        )

        if(isFound) {
            match.userOptions.cdn = cdn
        }


        return webpackConfig
    }
}

 

标签:react,lazy,const,CDN,js,React,path,优化,打包
From: https://www.cnblogs.com/qinlinkun/p/18073562

相关文章

  • Python实现BOA蝴蝶优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景蝴蝶优化算法(butterflyoptimizationalgorithm,BOA)是Arora等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,......
  • Python实现BOA蝴蝶优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景蝴蝶优化算法(butterflyoptimizationalgorithm,BOA)是Arora等人于2019年提出的一种元启发式智能算法。该算法受到了蝴蝶觅食和交配行为的启发,......
  • SEO优化要怎样去挖掘长尾关键词?#蜘蛛池SEO
    SEO优化要如何挖掘长尾关键词?无论是做百度SEO优化还是谷歌SEO优化,在搜索引擎SEO优化中,挖掘长尾关键词是一项至关重要的任务,接下来我们一起了解一下如何挖掘长尾关键词(8zySEO)?川圣SEO八爪鱼SEO?baidu搜索:如何联系八爪鱼SEO?挖掘长尾关键词是SEO优化中的关键步骤,因为这些关键词......
  • 独立站建站SEO如何优化#蜘蛛池SEO
    独立站建站SEO如何优化#蜘蛛池SEO随着全球化的加速和互联网的普及,越来越多的企业开始关注外贸市场,希望通过搭建独立的外贸网站来拓展海外业务。然而,在寻找专业公司搭建外贸独立站(8zyseo)之前,有几个重要的事项需要特别注意,以确保网站的顺利搭建和高效运营。川圣SEO八爪鱼SEO?b......
  • MFEA-GSMT--通过基因相似性和镜像转换来解决多任务优化问题
    MFEA-GSMT–通过基因相似性和镜像转换来解决多任务优化问题title:ImprovingEvolutionaryMultitaskingOptimizationbyLeveragingInter-TaskGeneSimilarityandMirrorTransformationauthor:XiaoliangMa,YongjinZheng,andZexuanZhu,XiaodongLi,LeiWang,Yu......
  • React报错:Uncaught Error: Too many re-renders. React limits the number of renders
    UncaughtError:Toomanyre-renders.Reactlimitsthenumberofrenderstopreventaninfiniteloop.atrenderWithHooks(react-dom.development.js:16317:1)atmountIndeterminateComponent(react-dom.development.js:20074:1)atbeginWork(react-do......
  • 【 React 】React 构建组件的方式有哪些?区别?
    1.组件是什么组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式在React中,一个类、一个函数都可以视为一个组件降低整个系统的耦合度,在保持接口不变的情况下,我们可以替换不同的组件快速完成需求,例如输入框,可以替换为日历、时间、范围等组件......
  • pandas DataFrame内存优化技巧:让数据处理更高效
    Pandas无疑是我们数据分析时一个不可或缺的工具,它以其强大的数据处理能力、灵活的数据结构以及易于上手的API赢得了广大数据分析师和机器学习工程师的喜爱。然而,随着数据量的不断增长,如何高效、合理地管理内存,确保PandasDataFrame在运行时不会因内存不足而崩溃,成为我们每一个人......
  • 基于遗传优化的协同过滤推荐算法matlab仿真
    1.算法运行效果图预览  最后得到推荐的商品ID号:推荐商品的ID号:ans=98381758221911149021490212352247322307123499117901547165501655016550......
  • Vue — 打包优化
    1.默认情况下,打包好的文件需要房子啊服务器的根目录下,如果希望能够双击运行,需要配置pacblicPath为相对路径const{defineConfig}=require('@vue/cli-service')module.exports=defineConfig({publicPath:'./',transpileDependencies:true})2.路由懒加载:当打......