关于webpack的一些记录

文章目录

    • webpack基础配置
    • 开发模式的一些配置
    • 实际生产的一些优化
      • 提升开发体验
      • 提升打包构建速度
      • 减少代码体积
      • 优化代码运行性能

webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时,它会在内部构建一个依赖图(dependency graph),此依赖图对应映射到项目所需的每个模块,并生成一个或多个 bundle。

webpack基础配置

  • entry(入口):webpack从哪个/哪些文件打包
  • output(输出):webpack打包完的文件输出到哪里,如何命名等
  • loader(加载器):webpack本身只能处理js、json等资源,其他资源需要借助loader来解析
  • plugin(插件):拓展webpack的功能
  • mode(模式):开发模式(development)、生产模式(production)

开发模式的一些配置

开发模式下配置一些基础配置(也就是平时开发React、Vue项目的脚手架):

  • 配置entry: 打包文件路径
  • 配置output: 输出文件,文件别名等
  • 配置loader和plugin:在module的rules里配置处理html、css、js、图片等
    • 处理css用css、less、sass等loader(postcss处理兼容)
    • HtmlWebpackPlugin处理html
    • 处理图片(webpack4是用file-loader、url-loader,webpack5是内置的直接配置规则type为asset,asset/sresource处理字体/其他资源等
    • 配置EslintWebpackPlugin使用include/exclude打包处理文件过滤,开启cache等
    • 使用babel处理js(@babel/prese-envt处理兼容)
    • devtool配置source map
    • 配置splitChunk、runtimeChunk
    • devServer配置等

实际生产的一些优化

提升开发体验

  • 使用Source Map然开发或者上线时代码报错能更加准确的错误提示。

提升打包构建速度

  • 使用HotModuleReplacement(HMR热更新),让开发时只重新编译打包更新变化的代码,不会打包整个代码包, 不变的代码使用缓存,从而更新速度更快。

  • 使用OneOf让资源文件一旦被某个loader处理了,就不会继续遍历loader,打包速度更快

  • 使用Include/Exclude排除或只检测某些文件,处理的文件更少,速度更快

  • 使用Cacheeslintbabel处理的结果进行缓存,让首次之后的打包速度更快。

  • 使用Thead多进程处理eslintbabel任务速度更快。(注意:进程启动通信都有开销的,要在项目比较大代码比较多处理时才有明显的效果)

减少代码体积

  • 使用Tree Shaking去除了没有使用过的多余代码,让代码包体积更小。

  • 使用@babel/plugin-transform-runtime插件对babel进行处理,让辅助代码从中引入,而不是每个文件都生成辅助代码,从而体积更小

  • 使用Image Minimizer对项目中图片进行压缩,体积更小,请求速度更快。(注意:如果项目中图片都是在线链接,那就不需要用了,本地项目静态图片才需要进行压缩。)

优化代码运行性能

  • 使用Code Split把代码进行分割成多个js文件,从而使单个文件体积更小,并行加载js速度更快。并且通过import动态导入语法进行按需加载,从而达到需要使用时才加载该资源,不用时不进行加载。

  • 使用Preload/Prefetch对代码进行预加载,等需要使用时就可以直接使用。(注意:浏览器兼容不是很好)

  • 使用Network Cache对输出资源文件进行更好的命名,将来好做缓存。

  • 使用Core-js对js进行兼容性处理,让代码可以兼容并运行在低版本浏览器

  • 使用PWA让代码可以离线访问,从而提升用户体验。(注意:对于低版本浏览器兼容不是很好)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/711129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最佳实践:Websocket 长连接状态如何保持

WebSocket 是一种支持通过单个 TCP 连接进行全双工通信的协议,相较于传统的 HTTP 协议,它更适合需要实时交互的应用场景。此协议在现代 Web 应用中扮演着至关重要的角色,尤其是在需要实时更新和通信的场合下维持持久连接。本文将探讨 WebSock…

图神经网络/生物信息交叉 Paper reading

目录 1. SMILES字符串 2. 利用图马尔可夫神经网络(GMNN)来进行关联性预测 3. 图池化算法 4. 合成致死性(SL)预测 5. 蛋白质溶解度研究 6. 药物疾病关联预测(DAA) 7. tRNA-疾病关系预测 8.异构体功能…

安卓手机安装termux、kali linux及基本配置

相关阅读:Termux 高级终端安装使用配置教程 | 国光 百度安全验证 该文安装的 kali liunx 应该是简易版的,没有相关工具 一、下载安装termux 建议通过 f-droid 应用市场下载链接termux,点击即直接下载。 二、配置termux 1.更换镜像源 te…

如何访问内网服务器?

访问内网服务器是在网络架构中常见的需求。内网服务器是指在一个局域网中运行的服务器,可以提供各种服务,如文件共享、网站托管等。由于安全性的考虑,内网服务器一般不直接暴露在公网中,所以需要通过特定的方法来访问。 一种常见的…

1. 开发环境搭建

文章目录 前端 前后端分离项目 前端:管理端web页面 , 用户端小程序后端:SpringBoot 前端 基于Nginx运行

TypeError: `dumps_kwargs` keyword arguments are no longer supported

TypeError: dumps_kwargs keyword arguments are no longer supported 1. 问题描述2. 解决方法 1. 问题描述 使用 FastChat 启动私有大语言模型,通过一些 UI 工具进行访问时,报以下错误。 略 2024-02-29 09:26:14 | ERROR | stderr | yield f"…

基于语义解析的KBQA——代码和论文详细分析

根据论文:Semantic Parsing on Freebase from Question-Answer Pairs,分析其代码和步骤,以加强对这一流程的深入理解,重点关注模型的输入、输出和具体方法。 前言 提供阅读本文的前提知识,引用自Semantic Parsing on…

Java实战:Spring Boot实现WebSocket实时通信

本文将详细介绍如何在Spring Boot应用程序中实现WebSocket实时通信。我们将探讨WebSocket的基本概念,以及如何使用Spring Boot和Spring WebSocket模块来实现WebSocket服务器和客户端。此外,我们将通过具体的示例来展示如何在Spring Boot应用程序中配置和…

【探索AI】十二 深度学习之第2周:深度神经网络(一)深度神经网络的结构与设计

第2周:深度神经网络 将从以下几个部分开始学习,第1周的概述有需要详细讲解的的同学自行百度; 深度神经网络的结构与设计 深度学习的参数初始化策略 过拟合与正则化技术 批标准化与Dropout 实践:使用深度学习框架构建简单的深度神…

《More Effective C++》- 极精简版 1-10条

本文章属于专栏《业界Cpp进阶建议整理》 本文列出《More Effective C》的1-10条的个人理解的极精简版本。 1、仔细区分pointers和references 使用引用的情况: 一旦代表的该对象就不能改变,应该选择reference(优势是使用时不需要判是否空&…

微信小程序的医院食堂订餐系统uniapp+vue+springboot/django/php

针对患者订餐的管理现状,本微信小程序的患者订餐主要实现以下几个目标: 1.系统界面简洁,操作简便。 2.拥有精准,高效的查询功能。 3.能使管理人员能够及时的获得精确的信息。 4.对数据内容的管理安全,…

安卓websocket(客服端和服务端写在app端) 案例

废话不多说直接上代码 首选导入 implementation "org.java-websocket:Java-WebSocket:1.4.0" package com.zx.qnncpds.androidwbsocket;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button;import a…

腾讯:《智能科技 跨界相变——2024数字科技前沿应用趋势》

1月23日,腾讯发布了题为《智能科技 跨界相变——2024数字科技前沿应用趋势》的报告,报告从计算重塑、智能升维、沉浸交互、未来连接四个方面,对100多项未来技术和重点方向给出了趋势性判断。并表示我们正驶向一个由连接衍生交互、由计算催生智…

把简单留给用户,把复杂交给 AI

2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿(Luke)分享了对 AI 与数据行业的一些战略思考,以及对中美企业服务市场的见解,引发业界同仁的广泛共鸣。正值 Kyligence 成立 8 周年,恰逢 AI 技术应用风起云涌…

leetcode 2.29

Leetcode hot100 二分查找1. 搜索插入位置2. 搜索二维矩阵 二分查找 1. 搜索插入位置 搜索插入位置 标准二分的写法: 复杂度分析 时间复杂度:O(log⁡n),其中 n 为数组的长度。二分查找所需的时间复杂度为 O(log⁡n)。 空间复杂度&#xff1…

FLask会话技术和Flask模板语言

二、FLask会话技术和Flask模板语言 1.会话技术 cookie 客户端的会话技术:让服务器认识浏览器,常用于登录 cookie本身由浏览器保存,通过Response将cookie写到浏览器上,下一次访问,浏览器会根据不同的规则携带cookie过…

ssm656基于JAVA的校园失物招领平台的设计与实现

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一 、设计说明 1.1 课题…

(k8s中)docker netty OOM问题记录

1、首先查看docker的内存占用情况: docker top 容器名 -u 查看内存cpu占用率(容器名来自kubectl describe pod xxx或者docker ps) 可以看出内存一直增长,作为IO代理这是不正常的。 2、修改启动参数和配置文件 需要注意的是为了…

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.01.01-2024.01.10

论文目录~ 1.RoboFusion: Towards Robust Multi-Modal 3D obiect Detection via SAM2.Aligned with LLM: a new multi-modal training paradigm for encoding fMRI activity in visual cortex3.3DMIT: 3D Multi-modal Instruction Tuning for Scene Understanding4.Incorporati…

电子科技大学课程《计算机网络系统》(持续更新)

前言 本校的课程课时有所缩减,因此可能出现与你学习的课程有所减少的情况,因此对其他学校的同学更多的作为参考作用。本文章适合学生的期中期末考试,以及想要考研电子科技大学的同学,电子科技大学同学请先看附言。 第一章 计算…