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

[vuenextadmin]vue3+vite打包gzip压缩、cdn加速

一、gzip压缩1.安装
一、gzip 压缩

1. 安装

使用 vite-plugin-compression 插件

npm install vite-plugin-compression --save-dev

2. 使用

vite.config.ts

import viteCompression from 'vite-plugin-compression';plugins: [viteCompression()
]

二、cdn 加速

网络卡,打包后第一次进入还是慢,暂未使用到项目 vue-next-admin 中。这里只做参考,需要的可自行添加

1. 插件安装


vite-plugin-cdn-import

npm i vite-plugin-cdn-import -D

vue-demi (必须安装)

否则报 Failed to resolve module specifier "vue". Relative references must start with either "/", "./", or "../".

npm install vue-demi --sav

2. 使用


utils 下创建 build.ts 文件,文件内容如下。

参数说明:(path 完整链接为:查看 vite-plugin-cdn-import 插件的 prodUrl)

  • name: 依赖包的名称
  • var: 包暴露的全局变量名
  • path: cdn 链接地址,可通过网站 https://www.jsdelivr.com/ 去查询

需要注意下面 importToCDN modules 中的 css 链接 ,添加的话,需要把对应的 css 引入删除 ,如 删掉 element plus 的 css 引入 (@import 'element-plus/dist/index.css)。防止打包时,还把 css 打包进去

import importToCDN, { autoComplete } from 'vite-plugin-cdn-import';/*** 打包相关* @description importToCDN https://github.com/mmf-fe/vite-plugin-cdn-import* @description cdn 在线引入的 cdn 地址配置。path:https://www.jsdelivr.com/* @description external 打包时,过滤包导入。参考:https://rollupjs.org/configuration-options/#external*/
export const buildConfig = {cdn() {return importToCDN({modules: [autoComplete('vue'),autoComplete('axios'),{name: 'vue-demi',var: 'VueDemi',path: 'lib/index.iife.min.js',},{name: 'vue-router',var: 'VueRouter',path: 'dist/vue-router.global.min.js',},{name: 'element-plus',var: 'ElementPlus',path: 'dist/index.full.min.js',css: 'dist/index.min.css',},{name: '@element-plus/icons-vue',var: 'ElementPlusIconsVue',path: 'dist/index.iife.min.js',},{name: 'echarts',var: 'echarts',path: 'dist/echarts.min.js',},{name: 'echarts-gl',var: 'echarts-gl',path: 'dist/echarts-gl.min.js',},{name: 'echarts-wordcloud',var: 'echarts-wordcloud',path: 'dist/echarts-wordcloud.min.js',},{name: 'vue-i18n',var: 'VueI18n',path: 'dist/vue-i18n.global.min.js',},{name: 'jsplumb',var: 'jsPlumb',path: 'dist/js/jsplumb.min.js',css: 'css/jsplumbtoolkit-defaults.min.css',},{name: 'cropperjs',var: 'Cropper',path: 'dist/cropper.min.js',css: 'dist/cropper.min.css',},{name: 'sortablejs',var: 'Sortable',path: 'Sortable.min.js',},{name: 'qrcodejs2-fixes',var: 'QRCode',path: 'qrcode.min.js',},{name: 'print-js',var: 'printJS',path: 'dist/print.min.js',css: 'dist/print.min.css',},{name: '@wangeditor/editor',var: 'wangEditor',path: 'dist/index.min.js',css: 'dist/css/style.min.css',},{name: '@wangeditor/editor-for-vue',var: 'WangEditorForVue',path: 'dist/index.min.js',},{name: 'vue-grid-layout',var: 'VueGridLayout',path: 'https://cdn.jsdelivr.net/npm/vue-grid-layout@3.0.0-beta1/dist/vue-grid-layout.umd.min.js',},],});},external: ['vue','axios','vue-router','element-plus','@element-plus/icons-vue','echarts','echarts-gl','echarts-wordcloud','vue-i18n','jsplumb','cropperjs','sortablejs','qrcodejs2-fixes','print-js','@wangeditor/editor','@wangeditor/editor-for-vue','vue-grid-layout',],
};

创建好 build.ts 后,在 vite.config.ts

以下内容为插件主要配置,已忽略其它 vite 配置

// 引入
import { buildConfig } from './src/utils/build';const viteConfig = defineConfig((mode: ConfigEnv) => {// 添加 buildConfig.cdn()plugins: [buildConfig.cdn()],optimizeDeps: {// 在预构建中强制排除的依赖项exclude: ['vue-demi'],},build: {rollupOptions: {// 打包时,过滤包导入external: buildConfig.external}}
})export default viteConfig;

3. 打包后效果

可通过注释 utils 下创建 build.ts 文件内容,实现部分 cdn,而不是全部。

貌似实现不了 cdn 的按需引入,如下图 index.html 中全引入了 cnd 链接

在这里插入图片描述


推荐阅读
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
author-avatar
爷W很幸福_448
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有