zoukankan      html  css  js  c++  java
  • 记账项目 webpack优化

    参考

    思考过程

    第一步: 查找哪里这么大体积

    • 当前打包后 3.15M, 下载后3.3M
    • 没有开始source-map, 所以不是这个问题
    • 不再引入全部的Icon后, 变为577k
    • 第一件事, 就是考虑如何动态引入Icon
    • 无法动态引入, 全部存入cdn, 每次通过Image, src进行引入

    第二步: 提取下核心库

    • 我想不明白的是, 及时提取了, 到时候, 不还是得下载, 使用强缓存?
    • 那又怎么解决第一次打开慢的问题

    第三部分: lazy实现懒加载组件

    • 核心库提取后, 可以方便后续加载, 现在的问题是找出用户看到页面的时候时间花在哪里
    • 现在还是拆分代码, 发现即使拆分出来基础库, 第一次加载的index.js太大了, 占用了太长时间.
    • 解决办法: 使用webpack 配合 react中的lazy方法
    import React, { Suspense, lazy } from 'react';
    import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
    
    const Home = lazy(() => import('./routes/Home'));
    const About = lazy(() => import('./routes/About'));
    
    const App = () => (
      <Router>
        <Suspense fallback={<div>Loading...</div>}>
          <Switch>
            <Route exact path="/" component={Home}/>
            <Route path="/about" component={About}/>
          </Switch>
        </Suspense>
      </Router>
    );
    
    • 结果: Scripting时间降低为321ms.
    • 所有的js都已经拆开, 变为动态加载.

    结果

    • 图标全部保存cdn, 使用svg进行展示
    • webpack抽取依赖库代码, 形成不易变动代码
    • 组件使用懒加载方式, 保持首次js最小初始化
    • 学习到: 官方文档, 包含一切.
  • 相关阅读:
    关闭各种浏览器自动更新的方法
    新中新question
    linux忘记root密码后的解决办法
    Linux下的命令
    windows未启用Administrator账户
    Jenkins安装以及邮件配置
    pl/sql不能复制粘贴
    python-装饰器&自动化框架搭建
    进程练习——生成指定规格的图片
    python-类的各种方法
  • 原文地址:https://www.cnblogs.com/zhangrunhao/p/15710333.html
Copyright © 2011-2022 走看看