webpack打包优化指南

这篇具有很好参考价值的文章主要介绍了webpack打包优化指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

目前所有公司项目的代码量都比较大,打包出来的文件会很大,甚至导致打包压缩代码时内存不足,页面加载速度也较慢。为了优化加载速度,下面提供一些编码指导建议:

一、浏览器(chrome)运行指标

  1. 浏览器请求并发数量,chrome 请求并发数量为 6
  2. webpack 优化目的是为了提高首屏加载速度,即保证用户先看到整体页面框架,减少白屏时间。

二、优化方式

1、webpack打包

webpack 打包时合理的拆分文件,可以配置自动进行了 文件切割 ,切割后文件最大不会超过 1MB。主要配置内容如下:

module.exports = {
  /** 其他wenpack配置 */
  optimization: {
    splitChunks: {
      chunks: 'all',
      name: false,
      minSize: 600 * 1024,
      maxSize: 1000 * 1024
    }
  }
}
2、 懒加载

代码中使用 懒加载 的方式加载文件。在 webpack4 中,动态加载文件直接使用import('xxx')的方式即可。

• 在 react 项目中推荐在 路由层面 进行懒加载
import React, { Suspense, lazy } from 'react'
import { HashRouter, Switch, Route } from 'react-router-dom'

export default function App() {
  return (
    <HashRouter>
      <Suspense fallback={<div>Loading...</div>}>
        <Switch>
          <Route path="/" component={lazy(() => import('./routes/Home'))} exact />
          <Route path="/settings" component={lazy(() => import('./routes/Settings'))} exact />
          <Route component={lazy(() => import('./routes/404'))} />
        </Switch>
      </Suspense>
    </HashRouter>
  )
}
• 如果某个组件代码量非常大,也可在 组件层面 进行懒加载
import React, { Suspense } from 'react'

const OtherComponent = React.lazy(() => import('./OtherComponent'))
const AnotherComponent = React.lazy(() => import('./AnotherComponent'))

const MyComponent = () => (
  <div>
    <Suspense fallback={<div>Loading...</div>}>
      <section>
        <OtherComponent />
        <AnotherComponent />
      </section>
    </Suspense>
  </div>
)
动态加载第三方库
import React from 'react'

export default class SimpEditor extends React.Component {
  async componentDidMount() {
    // 由于simditor比较大,所以在组件挂在后再去加载
    // 加载过程中可添加相应的加载动画
    const Simditor = await import(/* webpackChunkName: "simditor" */ 'simditor')
  }
}
3、 资源文件打包。

资源文件包含图片、视频、音频、字体等文件,在配置url-loader的时候一定要注意配置limit选项

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpe?g|gif|webp)(\?.*)?$/,
        use: [
          {
            loader: 'url-loader',
            options: {
              limit: 8192 // 文件小于8k时,会被编译为base64,否则会以单独的文件的形式
            }
          }
        ]
      }
    ]
  }
}
- base64 编码

通常会比原有文件大 33%左右,所以当大文件编译为 base64 时,文件大小会变得非常大。小文件影响不大

- 预加载

提前加载未来要访问页面的资源,在使用代码切割的时候,我们可以使用预加载的方式加载后续要用到的资源。目前 ChromeFirefoxIE11 都有一定的支持。everest-cli默认支持 cssjsprefetch,不需要额外的配置

<!-- prefetch使用方式 -->
<link href="./static/js/chunk-b2e731ba.c6d62f25.js" rel="prefetch" />
- 项目中的不需要的包,请务必移除

在部分项目中,页面中没有使用到的包依然被保留下来了,导致打包后的文件非常大。

- 使用everest-cli的项目,可以使用命令everest build -r来生成打包报告文件,在这个文件里面我们可以查看每个模块打包后的大小。以针对性的优化
- 打包后应尽量保证 html 中初始 js 个数不超过 6 个,从而上浏览器能够并行加载
- babel 配置

babel 配置时@babel/preset-envmodules字段,请尽量不要使用cjs,使用cjs时,将不能支持动态导入文件,导致页面初始加载文件较大文章来源地址https://www.toymoban.com/news/detail-564106.html

三、优化指导:

  1. 在不能减少代码总体文件的情况下,尽量 减少首屏加载 的文件,让用户尽快看到页面,让用户在后续使用的时候渐进的去加载文件
  2. 合理拆分文件,尽量保证文件大小相差不太大,拆分文件不宜太多,导致加载速度过慢
  3. 配合后端Nginx合理利用 静态资源的强缓存 来加快访问效率

到了这里,关于webpack打包优化指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用webpack做一些前端打包时的性能优化

    一.webpack 的五个核心概念 1.Entry:入口指示,webpack以哪个文件为入口起点开始打包,分析构建内部依赖图 2.output:输出指示,webpack打包后的资源bundles输出到哪里去,以及如何命名 3.loader :loader让webpack能够去处翻译理那些非js文件(img css…) 4.Plugins :Plugins插件可以用于执行范围

    2024年02月12日
    浏览(50)
  • 一份Node.js性能优化技巧指南

    你是一个踏入后端开发领域的前端爱好者吗?🤔 准备好迎接在Node.js错综复杂的景观中惊险刺激的旅程吧!🎢 在这个探险中,我们将探索后端的无数奇迹,从使用Node.js框架快速创建自己的后端,到应对性能分析、测试,深入内存管理。💻🔍 加入我们,揭开C++插件的奥秘,征服子进程

    2024年02月21日
    浏览(47)
  • AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(七)

    实操: server.js utils/lib/index.js utils/package.json 从别处(网上、其他人手中)拿到写好的项目,一般不携带node_modules文件夹(所占存储空间大) 但有package.json文件,里面记载了当前项目下载过的包 还有package-lock.json文件,固定软件包的版本 导入模块/包,除了自己创建的模块、包

    2024年01月22日
    浏览(67)
  • 安全开发-JS应用&NodeJS指南&原型链污染&Express框架&功能实现&审计&WebPack打包器&第三方库JQuery&安装使用&安全检测

    Node.js是运行在服务端的JavaScript 文档参考:https://www.w3cschool.cn/nodejs/ Nodejs安装:https://nodejs.org/en 三方库安装 express:Express是一个简洁而灵活的node.js Web应用框架 body-parser:node.js中间件,用于处理 JSON, Raw, Text和URL编码的数据。 cookie-parser:这就是一个解析Cookie的工具。通过re

    2024年02月11日
    浏览(64)
  • AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(五)—— 项目-新闻头条-数据管理平台-ajax综合案例前端

    愿许秋风知我意,解我心中意难平。 推荐使用, 每个程序员都有自己的管理方式。 HTML结构: 1.为什么要提取公共前缀地址(基地址),因为公司业务可能会更换服务器,如果你不想一条一条地修改请求地址的话。 后续使用axios时,url不需要再写前缀。 2.请求成功与失败 成

    2024年01月25日
    浏览(52)
  • 前端10年进化 Node.js、模块化、CommonJS、AMD、CMD、Webpack、Vue-cli、Electron-vue

    模块化的概念在软件开发领域已经存在很长时间,但在 JavaScript 中的模块化发展相对较晚。以下是对您提出的问题的回答: 提出时间:JavaScript 中的模块化概念相对较早地提出于 CommonJS 规范。CommonJS 是一种 JavaScript 模块化规范,最早在 2009 年由 Ryan Dahl 和其他社区成

    2024年02月11日
    浏览(79)
  • webpack 打包优化 - splitChunks

    打包时会遇到的问题: 打包文件过大,首屏加载时间过长,js阻塞页面渲染导致白屏 改动业务代码后,对于第三方库也会一并重新打包到一个出口文件,浏览器无法利用缓存来减少请求和加载的时间 针对以上两个问题,利用splitChunks可以将各个模块进行分割,并提取出相同部

    2024年04月27日
    浏览(28)
  • webpack打包速度优化思维导图

    去年的时候公司一个项目体积过大,我是m1芯片的macpro,光启动就要1分钟,配置差点都电脑,启动就要3分钟,自然打包速度也会慢很多,我们是gitlab设置成了自动打包的,所以打包速度上需要优化一下,否则太慢了。 之后是做了一个思维导图,测试了市面上对于webpack的优化

    2024年02月21日
    浏览(42)
  • 快速上手Webpack打包指南:用简单的步骤掌握Webpack的使用技巧

    Webpack的打包过程可以总结为以下几个步骤: 1.入口点配置:在Webpack的配置文件中,我们需要指定一个或多个入口点(entry points),这些入口点是我们应用程序的起点,Webpack会从这些入口点开始分析和构建依赖关系。 2.模块解析:Webpack会根据入口点的依赖关系图,递归地解析

    2024年02月15日
    浏览(60)
  • Webpack打包简单的js文件

    初始化一个新的npm 步骤一: 初始化npm项目,创建一个package.json文件 步骤二: 添加打包脚本:在 scripts 部分添加一个命令来运行webpack 步骤三: 安装Webpack 步骤四: 创建一个简单的Javascript文件,比如 src/index.js 步骤五: 配置Webpack,创建一个名为 webpack.config.js 的文件 步骤六

    2024年01月24日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包