Vue3——Vite篇

Vite是一款由Vue.js的作者尤雨溪开发的前端构建工具,专为现代前端项目而设计。它以其快速的冷启动、按需编译和热更新能力而受到广泛关注。以下是对Vite的详细解析:

一、核心特性

  1. 快速启动
    • Vite利用浏览器原生支持的ES模块(ESM),在开发环境中无需打包即可启动服务,极大提升了项目启动速度。这是因为Vite只启动一台静态页面的服务器,根据客户端的请求加载不同的模块处理,实现按需加载,避免了Webpack那样一开始就打包整个项目的做法。
  2. 按需编译
    • 在开发模式下,Vite只编译你正在查看的模块,大大加快了编辑-刷新的循环。这意味着只有当文件发生变化时,相应的模块才会被重新编译,减少了不必要的编译时间。
  3. 热模块替换(HMR)
    • Vite提供了非常快速的HMR体验,当某个模块内容改变时,只让浏览器去重新请求该模块即可,而不是像Webpack那样重新编译该模块的所有依赖。这几乎做到了无缝的实时更新,提升了开发效率。
  4. 配置简单
    • Vite的配置文件vite.config.js相较于Webpack更为简洁,降低了入门门槛。同时,Vite支持多种框架(如Vue、React、Preact、Svelte等)和插件扩展,使得开发者可以轻松适配不同项目和需求。
  5. 兼容性良好
    • Vite通过插件支持,如@vitejs/plugin-legacy,可以自动为不支持原生ESM的浏览器生成传统版本的chunk及相应的polyfill,确保了良好的兼容性。

二、配置文件

Vite的配置文件vite.config.js是Vite项目中的核心配置文件,通过该文件可以对项目的开发服务器、插件系统、打包配置等进行自定义。常见的配置项包括:

  • root:指定项目的根目录。
  • base:指定在开发或生产环境中,应用的公共基础路径。
  • server:自定义Vite开发服务器的行为,包括端口、代理设置等。
  • build:自定义项目的打包行为,如输出目录、代码压缩等。
  • plugins:配置Vite插件,可以是自定义插件或官方/社区提供的插件。

三、使用场景

Vite非常适合用于现代前端项目的开发,特别是在需要快速启动、热更新和良好开发体验的场景下。例如,在开发Vue、React等单页面应用(SPA)时,Vite能够显著提升开发效率,降低开发成本。

四、优缺点

  • 优点
    • 快速启动和按需编译,提升了开发效率。
    • 支持热模块替换(HMR),实现了无缝的实时更新。
    • 配置简单,降低了入门门槛。
    • 兼容性良好,支持多种框架和插件扩展。
  • 缺点
    • 由于采用unbundle机制,首屏加载时可能会有一定的性能损耗,不过Vite通过缓存和预构建等方式进行了优化。
    • 不支持CommonJS模块,仅支持ES Module。

五、总结

Vite作为一款现代前端构建工具,以其快速的启动速度、按需编译和热更新能力而受到广泛关注。通过简洁的配置和强大的插件系统,Vite为开发者提供了高效、灵活的开发体验。同时,Vite也具备良好的兼容性和可扩展性,能够满足不同项目和需求的要求。

--------------------------------------------------------------------------------------------------------

Vite是一款由尤雨溪(Vue.js 作者)开发的现代前端构建工具,专为现代前端项目而设计。它提供了极速的开发服务器和高效的构建机制,通过简单直观的配置文件,开发者可以轻松定制开发环境和构建流程。以下是Vite的详细介绍及常见配置项。

Vite简介

  • 极速启动:Vite 利用浏览器原生支持的 ES 模块,在开发环境中无需打包即可启动服务,极大提升了项目启动速度。
  • 模块热更新(HMR):Vite 支持基于原生 ESM 的模块热替换,实现了快速、无感知的开发体验。
  • 高效构建:Vite 使用 Rollup 进行生产构建,支持按需加载和代码分割,提供了优化的生产环境构建。

Vite 配置文件(vite.config.js)

Vite 的核心配置文件是 vite.config.js,位于项目根目录。这个文件使用 CommonJS 格式或 ES 模块格式导出一个配置对象,用于定义项目的开发服务器、插件系统、打包配置等。

常见配置项

  1. root
    • 作用:指定项目的根目录。
    • 默认值:当前工作目录。
    • 示例root: './src', 将根目录设置为 src 文件夹。
  2. base
    • 作用:指定在开发或生产环境中,应用的公共基础路径。
    • 默认值'/'
    • 示例base: '/my-app/', 应用将被部署到 /my-app/ 子路径。
  3. server
    • 作用:自定义 Vite 开发服务器的行为。
    • 子配置项
      • port:指定开发服务器的端口,默认值为 3000
      • proxy:配置开发服务器的代理设置,解决跨域问题。
      • open:是否在服务器启动时自动打开浏览器。
      • https:是否启用 HTTPS。
      • cors:为开发服务器配置 CORS。
server: {  port: 8080,  proxy: {  '/api': {  target: 'http://localhost:5000',  changeOrigin: true,  rewrite: (path) => path.replace(/^\/api/, ''),  },  },  open: true,  https: false,  cors: true,  
},

 build

  • 作用:自定义项目的打包行为。
  • 子配置项
    • outDir:指定生产环境打包文件的输出目录,默认值为 dist
    • minify:代码压缩配置,支持 terser 和 esbuild
    • assetsDir:指定生成静态资源的存放路径。
    • chunkSizeWarningLimit:规定触发警告的 chunk 大小(以 kbs 为单位)。
build: {  outDir: 'build',  minify: 'esbuild',  assetsDir: 'assets',  chunkSizeWarningLimit: 500,  
},

 plugins

  • 作用:配置 Vite 插件,以扩展其功能。
  • 示例:使用 Vue 插件。
import vue from '@vitejs/plugin-vue';  
export default defineConfig({  plugins: [vue()],  
});

resolve

  • 作用:配置模块解析选项。
  • 子配置项
    • alias:路径别名替换。
    • extensions:配置导入时想要省略的扩展名列表。
  • 示例
resolve: {  alias: {  '@': path.resolve(__dirname, 'src'),  'components': path.resolve(__dirname, 'src/components'),  },  extensions: ['.mjs', '.js', '.ts', '.tsx', '.json'],  
},

css

  • 作用:配置 CSS 相关选项。
  • 子配置项
    • preprocessorOptions:配置 CSS 预处理器选项。
    • modules:启用 CSS 模块化。
  • 示例

 

css: {  preprocessorOptions: {  scss: {  additionalData: '@import "@/styles/variables.scss";',  },  },  modules: true,  
},

总结

Vite 通过其简洁而强大的配置文件,提供了灵活的配置选项,帮助开发者快速搭建和优化前端项目。以上介绍了 Vite 的常见配置项,包括项目根目录、公共基础路径、开发服务器配置、构建配置、插件系统、模块解析和 CSS 配置等。开发者可以根据项目需求,自定义这些配置项,以提升项目开发效率和最终产品的性能。

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

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

相关文章

ARM单片机的内存分布(重要)

ARM单片机的内存分布(重要) 一、S32K344的内存布局 MEMORY {int_pflash : ORIGIN 0x00400000, LENGTH 0x003D4000 /* 4096KB - 176KB (sBAF HSE)*/int_dflash : ORIGIN 0x10000000, LENGTH 0x00020000 /* 128KB …

BUUCTF [SCTF2019]电单车详解两种方法(python实现绝对原创)

使用audacity打开,发现是一段PT2242 信号 PT2242信号 有长有短,短的为0,长的为1化出来 这应该是截获电动车钥匙发射出的锁车信号 0 01110100101010100110 0010 0前四位为同步码0 。。。中间这20位为01110100101010100110为地址码0010为功…

不靠学历,不拼年资,怎么才能月入2W?

之前统计局发布了《2023年城镇单位就业人员年平均工资情况》,2023年全国城镇非私营单位和私营单位就业人员年平均工资分别为120698元和68340元。也就是说在去年非私营单位就业人员平均月薪1W,而私营单位就业人员平均月薪只有5.7K左右。 图源:…

两数之和、三数之和、四数之和

目录 两数之和 题目链接 题目描述 思路分析 代码实现 三数之和 题目链接 题目描述 思路分析 代码实现 四数之和 题目链接 题目描述 思路分析 代码实现 两数之和 题目链接 LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode) 题目…

EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)

摘要 EfficientFormerV2是一种通过重新思考ViT设计选择和引入细粒度联合搜索策略而开发出的新型移动视觉骨干网络。它结合了卷积和变换器的优势,通过一系列高效的设计改进和搜索方法,实现了在移动设备上既轻又快且保持高性能的目标。这一成果为在资源受…

Redis-01 入门和十大数据类型

Redis支持两种持久化方式:RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上,可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照,可以通过恢复RDB文件来恢复数据。 2.AOF持久化…

力扣P1706全排列问题 很好的引入暴力 递归 回溯 dfs

代码思路是受一个洛谷题解里面大佬的启发。应该算是一个dfs和回溯的入门题目&#xff0c;很好的入门题目了下面我会先给我原题解思路我想可以很快了解这个思路。下面是我自己根据力扣大佬写的。 我会进行详细讲解并配上图辅助理解大家请往下看 #include<iostream> #inc…

初始MYSQL数据库(7)—— 视图

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; MYSQL 引言 前面我们学习MySQL数据库时&#xff0c;创建表之后&#xff0c;会在表中插入数据&#xff0c;在需要的时候&#xff0c;也会进行…

python文字转wav音频

借鉴博客 一.前期准备 1. pip install baidu-aip 2. pip install pydub 3. sudo apt-get install ffmpeg 二.代码 from aip import AipSpeech from pydub import AudioSegment import time#input your own APP_ID/API_KEY/SECRET_KEY APP_ID 14891501 API_KEY EIm2iXtvD…

示例:WPF中Grid显示网格线的几种方式

一、目的&#xff1a;介绍一下WPF中Grid显示网格线的几种方式 二、几种方式 1、重写OnRender绘制网格线&#xff08;推荐&#xff09; 效果如下&#xff1a; 实现方式如下&#xff1a; public class LineGrid : Grid{private readonly Pen _pen;public LineGrid(){_pen new P…

【Linux】深度解析与实战应用:GCC/G++编译器入门指南

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…

RabbitMQ08_保证消息可靠性

保证消息可靠性 一、生产者可靠性1、生产者重连机制&#xff08;防止网络波动&#xff09;2、生产者确认机制Publisher Return 确认机制Publisher Confirm 确认机制 二、MQ 可靠性1、数据持久化交换机、队列持久化消息持久化 2、Lazy Queue 惰性队列 三、消费者可靠性1、消费者…

速通LLaMA3:《The Llama 3 Herd of Models》全文解读

文章目录 概览论文开篇IntroductionGeneral OverviewPre-TrainingPre-Training DataModel ArchitectureInfrastructure, Scaling, and EfficiencyTraining Recipe Post-TrainingResultsVision ExperimentsSpeech Experiments⭐Related WorkConclusionLlama 3 模型中的数学原理1…

细说硫酸钙防静电地板的材质结构和优势特点

防静电地板有全钢基材的、硫酸钙基材的、铝合金基材的&#xff0c;在一些防静电要求、承载要求、铺设要求、铺装效果要求很高的场合&#xff0c;如银行、电信机房、移动机房、智能化办公室、部队指挥中心&#xff0c;通常都会使用硫酸钙防静电地板。那么什么是硫酸钙防静电地板…

计算机毕业设计 二手图书交易系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

计算机毕业设计 基于Python的医疗预约与诊断系统 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

arthas-阿里远程诊断工具神器一定要掌握

文章目录 1. 背景介绍2. 安装下载3. 常用命令4. 常见案例4.1 案例一&#xff1a;使用logger 实时修改某个类的日志级别、4.2 案例二&#xff1a;使用watch 查看方法输入输出参数4.3 案例三&#xff1a;使用 Arthas 实现在线代码热更新 1. 背景介绍 通常&#xff0c;本地开发环…

文件上传、amrkdown编辑器

一、文件上传 这里我以图片为例&#xff0c;进行上传&#xff0c;上传到阿里云oss&#xff08;对象存在中&#xff09; 首先&#xff0c;我们先梳理一下&#xff0c;图片上传的流程 1、前端选择文件&#xff0c;提交文件 前端提交文件&#xff0c;我们可以使用ElementUI中的…

蓝队技能-应急响应篇Web内存马查杀JVM分析Class提取诊断反编译日志定性

知识点&#xff1a; 1、应急响应-Web内存马-定性&排查 2、应急响应-Web内存马-分析&日志 注&#xff1a;传统WEB类型的内存马只要网站重启后就清除了。 演示案例-蓝队技能-JAVA Web内存马-JVM分析&日志URL&内存查杀 0、环境搭建 参考地址&#xff1a;http…

有关 签到/签退 业务逻辑 的梳理与学习

导言 最近搞到了个签到管理&#xff0c;其中的业务逻辑感觉有点复杂(可能是我的方向不对),虽然是实现了&#xff0c;不过代码和逻辑很多&#xff0c;也有些乱&#xff0c;想趁着还记得逻辑来记录梳理一下&#xff0c;看看自己以后有没有更好的思路&#xff0c;或者有大佬有思路…