vite项目优化

vite项目优化vite 项目按需引入优化 optimizeddep reloadingnew

首先在讲述vite优化之前,我们先来分析一下和传统的项目管理构建工具的区别,以webpack为例,它是利用plugin插件loader加载器对项目的所有模块和依赖统一通过入口文件进行编译,从而变成我们html所需要的js格式渲染我们的页面。

随着浏览器的发展,逐渐的已经支持了 ES 模块

因此Vite在设计时考虑在浏览器请求源码时进行转换并按需提供源码。根据情景动态导入代码,即只在当前屏幕上实际使用时才会被处理。

优势:
这样就避免了随着应用体积的增大,导致了启动服务缓慢,一处代码更新界面需要数秒钟才能显示的问题。运行速度真的没得说。
在这里插入图片描述
在这里插入图片描述






当然我们今天说的不止是这些,既然选择了vite框架,自然不会考虑浏览器的兼容性,我们更多的还是关注vite本身的性能。

优势即劣势

正是因为vite本身是动态加载的资源,当某个路由的依赖项比较多的时候,加上你可能使用了某些组件库的按需加载(比如element-plus),在进入页面时可谓是很慢,而且页面都是会像卡壳了一样刷新一次。

技术层观察的表现是,network加载了很多资源,同时在cmd终端会显示:

下午7:01:09 [vite] ✨ new dependencies optimized: element-plus/es/components/message-box/style/index 下午7:01:09 [vite] ✨ optimized dependencies changed. reloading 下午7:01:23 [vite] ✨ new dependencies optimized: element-plus/es/components/form/style/index 下午7:03:57 [vite] vite.config.ts changed, restarting server... 

这是因为需要按需写入组件与样式导致的,那么怎么解决这一问题呢,我们更希望在开发环境下,能提高我们的运行速度,而且让生成环境的包体积更小。然而,好像没有太好的解决方案,因为第一次按需加载按照vite的设计就必须要写入。

换个思路,那么我只能在开发环境下全局加载组件,打包时再执行按需加载了…

// 自定义插件 ./plugins/fullImportPlugin import * as path from 'path' import type { 
    Plugin, ResolvedConfig } from 'vite' export default function fullImportPlugin () { 
    let config: ResolvedConfig return <Plugin>{ 
    name: 'fullImportElementPlus', async configResolved (conf) { 
    config = conf }, transform (code, id) { 
    // 判断当前处理的是否是 _src/main.ts_ if (path.join(config.root, 'src/main.ts') === id) { 
    const name = 'ElementPlus' // 引入 ElementPlus 和 样式 const prepend = `import ${ 
     name} from 'element-plus';\nimport 'element-plus/theme-chalk/src/index.scss';\n` code = code.replace('.mount(', ($1) => `.use(${ 
     name})` + $1) return prepend + code } return code } } } 
// vite.config.ts import { 
    ElementPlusResolver } from 'unplugin-vue-components/resolvers' import unElementPlus from 'unplugin-element-plus/vite' import unComponents from 'unplugin-vue-components/vite' import fullImportPlugin from './plugins/fullImportPlugin' const config = { 
    plugins:[] } if ( modes === 'development'){ 
    config.plugins.push(fullImportPlugin()) } else { 
    config.plugins.push(unElementPlus({ 
    useSource: true })) config.plugins.push(unComponents({ 
    dirs:[], dts: true, resolvers: [ ElementPlusResolver() ] })) } export default config 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218100.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:02
下一篇 2026年3月18日 上午8:03


相关推荐

  • 失而复得的爱情「建议收藏」

    失而复得的爱情「建议收藏」 那年夏天,长江边,夕阳还有一点点余辉,欢快的蛐蛐叫个不停。他和她坐在江边的石阶上,凝视波浪起伏的江面,任晚风吹乱本已理不清的思绪。  父母的叮咛始终绕在他的耳畔:“到大学要好好学习,你是我们的骄傲。”他不想因为谈恋爱而影响学习,让父母失望。虽然,她曾为他付出了很多,同时,他也恨自己,为什么当初要接受她?而她也知道他要对她说什么。  江水是浑浊的,心是沉重的。  风起了,江里的浪一浪高过一浪,气温

    2026年1月16日
    4
  • C语言实现分解质因数

    C语言实现分解质因数题目描述给出一个正整数 m 将其分解成质数相乘的形式 即 m m1 m2 m3 mk 其中 mi 为质数 并且满足 m1 程序输入说明输入包括多组测试数据 每组测试数据占一行 并且只有一个正整数 m 当 m 0 时 表示输入结束 程序输出说明对每组测试数据输出一个结果 并占一行

    2026年3月17日
    2
  • 诺基亚申请MDT测量配置方法及装置专利,向核心网节点发送MDT测量配置

    诺基亚申请MDT测量配置方法及装置专利,向核心网节点发送MDT测量配置

    2026年3月14日
    2
  • 使用指南

    使用指南

    2026年3月16日
    4
  • createcompatibledc报错_Compatible

    createcompatibledc报错_CompatibleCreateCompatibleDC函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。函数原型:HDCCreateCompatibleDC(HDChdc);参数:hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。返回值:如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL

    2025年7月31日
    4
  • java if语句例子_实例学习if语句用法

    java if语句例子_实例学习if语句用法我们前面学习了 java 中的 for 循环和 dowhile 语法及原理的相关内容 同样是 java 三大控制语句之一的选择语句 在实际的项目开发中使用频率也非常高 今天我们来学习选择语句中 if 语句用法和相关内容 都是属于 java 中的基本知识 java 零基础的朋友们可以一起来学习下面的内容 If 语句属于 java 中的选择语句 选择语句又称为分支语句 if 语句用法是比较简单的 它通过对给定的条件进行判断 从而决定执

    2026年3月17日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号