热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Vue经典项目瘦身大作战——打包压缩全过程

Vue经典项目瘦身大作战——打包压缩全过程-Vue经典项目瘦身大作战(全干货完整例子解读)一、打包环境二、项目开发依赖环境三、未进行处理的打包文件四、瘦身方法五、评价方法六、

一、打包环境

webpack@4.46.0

二、项目开发依赖环境

整个项目包含以下重量级依赖库,是打包后项目包文件庞大的根源。

  • echarts图表
  • jquery、layui(因为是旧的代码不改了)
  • SVG js 操作库拉斐尔raphael
  • 时间库moment
  • 百度vue地图

依赖包版本说明:

"dependencies": {
    "@ant-design/icons": "^2.1.1",
    "ant-design-vue": "^1.7.8",
    "axios": "^0.24.0",
    "compression-webpack-plugin": "^4.0.0",
    "core-js": "^3.6.5",
    "echarts": "^5.2.2",
    "echarts-liquidfill": "^3.1.0",
    "element-resize-detector": "^1.2.3",
    "hammer": "^0.0.5",
    "jquery": "^3.6.0",
    "js-base64": "^3.7.2",
    "layui-src": "^2.6.8",
    "moment": "^2.29.1",
    "raphael": "^2.3.0",
    "vue": "^2.6.11",
    "vue-baidu-map": "^0.21.22",
    "vue-echarts": "^6.0.0",
    "vue-router": "^3.5.3",
    "vuex": "^3.6.2"
  },

三、未进行处理的打包文件

其中chunk-vendors文件差不多2M,相当大。

四、瘦身方法

  1. 公共文件CDN
  2. 按需引入必须用
  3. 使用webpack插件忽略未使用的文件

五、评价方法

  1. 打包分析插件webpack-bundle-analyzer进行结果评价
  2. 文件浏览器查看

六、瘦身过程

  1. CDN引入
    vue.config.js文件中编辑配置,externals指的是排除以下依赖包的打包。vue等依赖包是公共基础。
    注意引入后变量的使用,注意externals对象中值的书写规则,如ant-design-vue,必须使用小写的antd变量来引用1
module.exports = {
  runtimeCompiler: true,
  lintOnSave: false, //是否开启eslint
  productionSourceMap: false,
  configureWebpack: {
    externals:{
      vue: 'Vue',
      'vuex':'Vuex',
      'vue-router': 'VueRouter',
      axios: 'axios',
      raphael: 'Raphael',
      'ant-design-vue': 'antd',
    },
  },
}

public/index.html文件中引入文件,


 	<link rel="stylesheet" href="https://www.layuicdn.com/layui-v2.6.8/css/layui.css">
    <link rel="stylesheet" href="'https://cdn.jsdelivr.net/npm/ant-design-vue@1.7.8/dist/antd.min.css'">

	<script src="https://cdn.jsdelivr.net/npm/moment@2.29.1/moment.min.js">script>

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js">script>
    <script src="https://www.layuicdn.com/layui-v2.6.8/layui.js">script>

    <script src="https://cdn.jsdelivr.net/npm/vue">script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js">script>
    <script src="https://cdn.bootcss.com/vuex/3.1.0/vuex.min.js">script>
    <script src="https://unpkg.com/axios/dist/axios.min.js">script>

    <script src="https://cdn.jsdelivr.net/npm/moment@2.29.1/locale/zh-cn.js">script>
    <script src="https://cdn.jsdelivr.net/npm/ant-design-vue@1.7.8/dist/antd.min.js">script>

    <script src="https://cdn.bootcdn.net/ajax/libs/raphael/2.3.0/raphael.js">script>
  1. vue-design图标库的压缩
    vue.config.js文件中编辑如下配置,将所需的文件指向另一个文件。
 configureWebpack: {
    resolve:{
      alias: {
        '@ant-design/icons/lib/dist$': path.resolve(__dirname,'./src/tools/icons.js')  // 自建的文件的相对路径
      }
    },
  },

icons.js文件内容如下

export { SettingOutline,
  CloudOutline,
  HomeOutline,
  FileImageOutline,
  SearchOutline,
  MenuFoldOutline,
  MenuUnfoldOutline,
  AppstoreOutline,
  ClusterOutline} from '@ant-design/icons'
  1. 插件式
    过略掉moment/locale下的文件,
 configureWebpack: {
    plugins:[
      new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
    ],
  },

七、瘦身结果


  1. ant-design-vue浏览器引入方法明确说明使用全局变量 antd ↩︎


推荐阅读
  • Bootstrap 插件使用指南
    本文详细介绍了如何在 Web 前端开发中使用 Bootstrap 插件,包括自动触发插件的方法、插件的引用方式以及具体的实例。 ... [详细]
  • Webpack 初探:Import 和 Require 的使用
    本文介绍了 Webpack 中 Import 和 Require 的基本概念和使用方法,帮助读者更好地理解和应用模块化开发。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 优化Vite 1.0至2.0升级过程中遇到的某些代码块过大问题解决方案
    本文详细探讨了在将项目从 Vite 1.0 升级到 2.0 的过程中,如何解决某些代码块过大的问题。通过具体的编码示例,文章提供了全面的解决方案,帮助开发者有效优化打包性能。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
author-avatar
书友53537817
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有