问题:vite首次加载慢

news2024/11/25 18:54:49

概述: 

不是说vite项目的启动很快很快吗?

vite项目的启动确实是快(注意这里的启动是指命令行启动完毕,不是指启动完之后首页加载完毕)

如果某个界面是首次进入,且依赖比较多/比较复杂的话,那就会比较慢了。

vite之所以启动快,是因为vite启动时并不会像webpack一样对所有代码进行编译/打包/压缩, 他只会对一小部分代码进行一些简单的处理,剩余的工作都交给浏览器,以及运行时进行依赖分析,动态打包,动态引入。

引入element-plus组件后,使用unplugin-vue-components 按需导入的依赖项更新导致页面无限次重载,会出现:

解决问题: 

安装 fs

yarn add fs 

 配置vite.config.js 文件

方式1:

import fs from 'fs';
// 排除重载的依赖项
const optimizeDepsElementPlusIncludes = ['element-plus/es'];
fs.readdirSync('node_modules/element-plus/es/components').forEach((dirname) => {
  fs.access(
    `node_modules/element-plus/es/components/${dirname}/style/css.mjs`,
    (err) => {
      if (!err) {
        optimizeDepsElementPlusIncludes.push(
          `element-plus/es/components/${dirname}/style/css`
        );
      }
    }
  );
});
 
 
export default ({ mode, command }) => {
.....
 
optimizeDeps: {
      include: optimizeDepsElementPlusIncludes
    },
 
......
 
})

方式2:

在根目录新建optimizeDeps.js

import fs from 'fs';
// 排除重载的依赖项
const optimizeDeps = [
  '@antv/g6',
  '@antv/s2',
  '@antv/s2-vue',
  '@antv/x6',
  '@antv/x6-vue-shape',
  '@howdyjs/mouse-menu',
  '@howdyjs/to-drag',
  '@tinymce/tinymce-vue',
  'axios',
  'circular-json',
  'codemirror',
  'dateformat',
  'dom-to-image',
  'echarts',
  'file-saver',
  'js-cookie',
  'pinia',
  'qs',
  'splitpanes',
  'sql-formatter',
  'tinymce',
  'vue-draggable-plus',
  'vue-i18n',
  'vue-router',
  'vxe-table',
  'xe-utils',
  'xlsx',
  'element-plus/es',
  'mitt'
];
fs.readdirSync('node_modules/element-plus/es/components').forEach((dirname) => {
  fs.access(
    `node_modules/element-plus/es/components/${dirname}/style/css.mjs`,
    (err) => {
      if (!err) {
        optimizeDeps.push(`element-plus/es/components/${dirname}/style/css`);
      }
    }
  );
});
export default optimizeDeps;

 配置vite.config.js

引入 import optimizeDeps from './optimizeDeps';并配置optimizeDeps

import vue from '@vitejs/plugin-vue';
import eslintPlugin from 'vite-plugin-eslint';
import optimizeDeps from './optimizeDeps';

export default defineConfig(({ mode }) => {
  return {
    plugins: [
        // ...
    ],
    resolve: {
      alias: {
        '@': resolve('./src')
      }
    },
    css: {
      preprocessorOptions: {
        // scss全局预定义变量
        scss: {
          additionalData: '@import "@/styles/index.scss";'
        }
      }
    },
    base: '/',
    publicDir: false, // public文件夹中的内容可以通过/根路径访问到,并且打包时会被完整复制到目标目录的根目录下
    build: {
      lib: {
      },
      rollupOptions: {
        // 确保外部化处理那些你不想打包进库的依赖
      }
    },
    optimizeDeps: {
      include: optimizeDeps
    }
  };
});

通过以上方法即可解决加载慢的问题 

扩展

当安装新的插件,如实现兄弟组件间的通信,需要安装mitt插件并配置,当做完这些工作后,控制台报错:

net::ERR_ABORTED 504 (Outdated Optimize Dep)

 “Outdated Optimize Dep” 表示 Vue 3 项目中的某些依赖项存在过时的优化。这可能导致本地地址访问出现问题,而网络地址正常访问的原因是网络地址可能使用了较新版本的依赖项。

原因是vite项目做了上述optimizeDeps的优化

解决:

只需在如在方式2的optimizeDeps.js文件中的 optimizeDeps[] 里面把新安装的mitt插件放进去即可。

 

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

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

相关文章

温习mysql函数 连接查询

字符串 1、CONCAT(S1,S2,...Sn) :字符串拼接,将S1 , S2 , ... Sn 拼接成一个字符串】 2、LOWER(str) :将字符串str全部转为小写 3、UPPER(str) :将字符串str全部转为大写 4、LPAD(str,n,pad): …

基于SpringBoot+Vue+MySQL的教学资源共享平台

系统展示 用户前台界面 管理员后台界面 系统背景 随着信息技术的迅猛发展,教育领域对高效、便捷的教学资源需求日益增长。传统教学模式已难以满足当前教育的多样化需求,特别是在资源共享与利用方面存在明显不足。因此,构建一个基于SpringBoot…

关于大模型在产品开发中所面临的问题,利用大模型技术解决很简单!

“ 具体问题具体分析,大模型技术没有统一的解决方案 ” 有人说2024年是大模型应用的元年,而大模型在未来的发展潜力毋庸置疑,这也就意味着人工智能技术是下一个风口,因此各种各样基于大模型技术的创业公司如雨后春笋般涌现。 从…

Linux云计算 |【第二阶段】SHELL-DAY5

主要内容: awk命令、内置变量(FS、$0、$1、$2、NF、NR)、过滤时机(BEGIN{}、{}、END{})、处理条件(正则、&&、||、~\!~、等)、awk数组、监控脚本、安全检测脚本 一、awk介绍 awk 是一…

【主机入侵检测】Wazuh解码器详解

前言 Wazuh 是一个开源的安全平台,它使用解码器(decoders)来从接收到的日志消息中提取信息。解码器将日志信息分割成字段,以便进行分析。Wazuh解码器使用XML语法,允许用户指定日志数据应该如何被解析和规范化。解码器的…

TP发邮件的功能如何实现?tp框架发送邮件?

tp发邮件系统如何设置发信?tp配置邮箱发送邮件方法? TP发邮件的功能,作为企业级应用中的一个关键模块,其稳定性和高效性直接影响到企业的日常运营。AokSend将深入探讨TP发邮件的功能如何实现,从基础配置到高级应用&am…

监控易监测对象及指标之:全面监控Oracle数据库

随着企业业务的不断增长和复杂化,Oracle数据库作为关键的业务数据管理系统,其性能和稳定性对于保障业务连续性至关重要。为了确保Oracle数据库的高效运行和稳定性能,对其进行全面监控成为了一项必要的工作。本文将基于监控易工具,…

搭建大模型知识库流程,以及基于langchain实现大模型知识库案例

“ RAG检索增强生成是为了解决大模型知识不足的问题 ” 大模型主要面临三个问题: 垂直领域内的知识不足 大模型知识有时间限制 大模型幻觉问题 第一个问题产生的原因是因为,没有经过垂直领域数据训练的大模型普遍表现不好;其次是目前的大…

新160个crackme - 054-vcrkme01

运行分析 需破解Name和Code PE分析 C程序,32位,无壳 静态分析&动态调试 ida找到关键字符串,双击进入函数 主函数静态分析,注释如上,还需要了解sub_401000函数 对sub_401000函数进行分析,注释如上&#…

半导体设备系列(2) 半导体设备与工厂控制仿真器Demo编写

可以用CS架构编写这两个仿真器,将设备写成服务器,接收来自工厂控制程序的命令。后续加上半导体设备通信协议。 半导体设备服务器 1)工程文件 QT core gui networkgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You ca…

linux 操作系统下的convertquota命令介绍和使用案例

linux 操作系统下的convertquota命令介绍和使用案例 convertquota命令介绍 convertquota是Linux系统中用于转换旧格式的用户和组配额文件的命令。它可以将旧格式的quota.user和quota.group文件转换为新格式的aquota.user和aquota.group文件。新格式的配额文件支持32位的uid/g…

有关WSL和docker的介绍

目录标题 如何利用在windows上配置docker实现linux和windows容器修改WSL默认安装(也就是linux子系统)目录到其他盘 如何利用在windows上配置docker实现linux和windows容器 wsl的基本命令:参考网页 docker入门到实践:参考网页 官方…

深度学习基础--卷积网络

图像的三个特性指出了专门模型架构的必要性。 首先,图像是高维的,一个用于分类任务的典型图像含有 224224 RGB 值(即,150528 个输入维度)。在全连接网络中,隐藏层的规模通常超过输入大小,因此&a…

uniapp中使用uni.$emit和uni.$on在vue和nvue页面之间传值但是无法赋值的问题

背景:我们在vue页面和nvue页面之间进行传值可以使用uni.$emit和uni.$onsh事件监听实现,官网描述:uni-app官网 (dcloud.net.cn)https://uniapp.dcloud.net.cn/api/window/communication.html#emit 而且官网上也明确说明了: 一、问…

SLMi33x系列SLMi330HCG-DG具有主动保护功能 兼容光耦的单通道带保护功能的隔离驱动器

SLMi33x系列SLMi330HCG-DG优势和亮点:国内首款带DESAT保护功能并兼容光耦驱动的IGBT/SiC隔离驱动器,5kVrms隔离电压和高达10kV的隔离浪涌电压,CMTI超过100kV/us SLMi330HCG-DG内置快速去饱和(DESAT) 故障检测功能、米勒钳位功能、漏极开路故…

棋牌灯控箱计时计费管理系统软件网关端口设置方法 佳易王麻将馆计时收银会员管理系统操作教程

一、前言 棋牌灯控箱计时计费管理系统软件网关端口设置方法 佳易王麻将馆计时收银会员管理系统操作教程 1、佳易王计时计费软件可接配套的灯控器 2、计时开灯则打开对应的灯 3、结账后自动关灯。 二、软件程序功能图文 1、当前计费方式可以按单价或时间段 2、软件解压即可…

永成分歧式防爆器Y-FBQ型

永成分歧式防爆器Y-FBQ型 当努力成为生活的常态, 生活就时刻充满期待, 深知每份订单都是信任, 品质和专业是我晒单的底气。 用途 型号为Y-FBQ型,分歧式防爆器是安装在瓦斯抽放管路中的简易防爆装置。此款产品主要由进气管、出气…

HarmonyOS开发5.0【rcp网络请求】

一 概述 现在鸿蒙的网络还不成熟,所以咱们需要对网络请求框架二次封装,并且避免业务方直接引用到,预防当有比较新的成熟性价比高的框架的替换,这个过程肯定是不可避免的 1.1 第三方比如 [axios]的js库迁移过来的[httpclient]通过socket&am…

Linux s3c2440 开发板上的操作系统实现 ubuntu

使用s3c2440开发板 使用ubuntu 1.ubuntu中的tftp,和nfs Trivial File Transfer Protocol,简单文件 传输协议。 通过网络在客户端与服务器之间进行简单文件 传输。提供不复杂、开销不大的文件传输服务。 Network File System,网络文件系统。通过 网络…

OpenStack概论和部署

目录 1.1 云计算概述 1.1.1 什么是云计算 1.laaS 2.PaaS 3.Saas 1.1.2 0penStack 概述 1.OpenStack 起源 2.什么是 Openstack 3.OpenStack 优势 1.2 安装方式 1.2.1 在线安装 1.配置系统基本环境 2.为系统设置阿里的仓库 3:设置kvm源 4:设…