【Umi】通过配置 dynamicImport loadingComponent 实现加载效果

在前端单页面应用中,子页面的代码都是当用户访问到的时候,才会异步去加载子页面的代码。如果子页面代码较大,
那么会给用户一段时间的卡顿感,很影响使用体验。所以,我们想在加载子页面代码时,显示 loading 组件,从而
优化体验。在 Umi 中,可以通过简单的配置,即可实现。

1、编写loading组件:
npm install --save nprogress
import React, { useEffect } from 'react';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
function PageLoading() {
  useEffect(() => {
    const progress = NProgress.start();
    return () => {
      progress.done();
    };
  }, []);
  return <></>;
}

export default PageLoading;
2、配置config
config.ts文件中
dynamicImport: {
    loading: '@/components/PageLoading'
},
3、修改加载条样式
:global {
  #nprogress {
    .bar {
      background: rgb(48, 222, 235) !important; //自定义颜色
      height: 5px !important;
    }
  }
}

Umi是一个用于构建高性能、模块化的前端应用的框架,它支持按需加载和资源优化。如果你想要优化`async.js`这样的资源打包,可以按照以下几个步骤操作: 1. **启用按需加载**:Umi通常通过Webpack或Vite等工具处理模块化加载,你可以配置Umi使用动态导入(`import()`语法)或预加载策略来只加载实际使用的部分,而不是一次性加载整个文件。 ```javascript // 配置文件(umi.config.js 或 vite.config.ts) import dynamic from 'umi/dynamic'; export default { dynamicImport: dynamic({ loader: '@/components/async.js', // 将async.js路径替换为你项目的实际位置 loading: () => import('./LoadingComponent'), }), }; ``` 2. **分割文件**:你可以将大的`async.js`文件分解成多个更小的chunk,只加载用户需要的部分。这通常发生在组件层面上,比如按路由划分。 ```yaml # umi-plugin-import 配置 routes: - path: '/your-path' component: '@/components/YourPage' dynamicImport: true ``` 3. **代码分割和压缩**:确保Webpack配置了适当的代码分割和压缩插件,如`optimize-split-chunks`和`terser-webpack-plugin`,它们可以帮助减小文件大小并提高加载速度。 4. **懒加载**:对于非关键的异步资源,考虑使用懒加载技术,用户滚动到某个区域时才加载对应的内容。 5. **检查网络请求**:确保`async.js`内容的加载对性能影响不大,避免不必要的HTTP请求。如果可能,优先加载核心功能相关的资源。 完成以上配置后,运行`umi build`或`umi dev`命令,Umi会生成优化后的资源结构。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值