Vue3——Vite篇

news2024/9/25 0:30:08

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.coloradmin.cn/o/2161898.html

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

相关文章

HarmonyOS NEXT:解密从概念到实践的技术创新与应用前景

HarmonyOS是目前华为手机所搭载的鸿蒙系统,它在Open Harmony的基础上兼容了安卓的AOSP,所以可以使用安卓APK应用,HarmonyOS属于华为在当前阶段过渡使用的系统,原生鸿蒙的应用生态尚未发展起来,兼容安卓应用可以让用户有…

【AI大模型】通义大模型API接口实现

目录 一、基础环境安装 (一)OpenAI Python SDK安装 (二)DashScope SDK安装 二、OPENAI接口实现 (一)文本输入 (二)流式输出 (三)图像输入 &#xff0…

Python 字符串的常见方法

Python 字符串的常见方法 字符串是 Python 中非常重要的数据类型之一。在日常编程中,我们经常需要对字符串进行各种操作,比如分割、连接、替换等。Python 提供了丰富的字符串方法,使得这些操作变得简单而高效。本文将详细介绍一些常见的字符…

【Docker】Docker快速入门

Docker学习笔记 一、Docker概述 为什么会出现Docker? 安卓开发流程:apk(java开发的)发布到应用商店,用户安装apk即可使用。 后端开发流程: jar(java开发的)带上环境发布到Docker仓库,用户从Docker仓库拉取镜像并部署。 总结…

关于Python升级以后脚本不能运行的问题

近日将Python从3.11升级到了3.12,然后把几个包例如numpy等也通过pip给upgrade了一下,结果原来运行的好好的脚本,都运行不了了,还出现各种报错。怀疑是自己升级了环境导致的,因此通过搜索引擎检索了一下,有这…

【React】(推荐项目)使用 React、Socket.io、Nodejs、Redux-Toolkit、MongoDB 构建聊天应用程序 (2024)

使用 React、Socket.io、Nodejs、Redux-Toolkit、MongoDB 构建聊天应用程序 (2024) 学习使用 React、Socket.io、Node.js、Redux-Toolkit 和 MongoDB 构建响应式实时消息聊天应用程序。这个项目涵盖了从设置到实施的所有内容,提供了宝贵的见解和实用技能。无论您是…

地平线占用预测 FlashOcc 参考算法-V1.0

1.简介 3D Occupancy Networks 的基本思路是将三维空间划分成体素网格,并对每个网格进行各类感知任务的预测。目前以网格为中心的方法能够预测每个网格单元的占用率、语义类别、未来运动位移和实例信息。3D occupancy 可以对道路障碍物进行更细粒度的划分&#xff…

【Docker】解决Docker Engine stopped

解决Docker Engine stopped 解决Docker Engine stopped1.检查虚拟设置2 安装wslwindows安装wsl 解决Docker Engine stopped 在安装完docker之后不少用户会遇到Docker Engine stopped。下面就下给出解决方法让docker正常运行起来 1.检查虚拟设置 打开任务管理器查看cpu页面&a…

vue-入门速通

setup是最早的生命周期,在vue2里边的data域可以使用this调用setup里面的数据,但是在setup里边不能使用thisvue项目的可执行文件是index,另外运行前端需要npm run vue的三个模块内需要三个不同的结构,里边放置js代码,注…

LED驱动电路

LED驱动电路简介 摘要: LED照明是今年来快速兴起发展的一种新型光源,它的许多良好特点使得它的应用面越来越广。LED的单向导电特性使人一般认为应该用直流驱动,但是对直流恒压和限流的装置在保证比较好的限流特性时,自身功耗是很…

【MySQL 04】数据类型

目录 1.数据类型分类 2.数值类型 2.1 tinyint 类型 2.2 bit类型 2.3 float类型 2.4decimal 3.字符串类型 3.1 char类型 3.2 varchar类型 4.日期和时间类型 6. enum和set类型 6.1.enum和set类型简介: 6.2.enum和set的一般使用方法 6.3.用数字的方式…

Excel的基本应用__1

1. 模拟运算 1.1 单变量求解 1.1.1 步骤 1.1.1 效果 1.2 模拟运算表 1.2.1 步骤 1.2.2 效果 2.选择性粘贴--转至 3. Excel中如何使用和定义名称 使用 相当于全局变量,可以在不同表中调用 3.1名称中使用常量 3.2名称中使用函数 调用 可以在不同的表中调用 3.…

[vulnhub] SickOS1.1

https://www.vulnhub.com/entry/sickos-11,132/ 主机发现端口扫描 探测存活主机,136是靶机,因为靶机是我最后添加的 nmap -sP 192.168.75.0/24 // Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-22 11:36 CST Nmap scan report for 192.168.75.1 …

vue-animate-onscroll动画库(可来回触发动画)

效果展示 ①触发一次动画 触发一次 ②触发多次动画 触发多次 1.什么是vue-animate-onscroll 它是一个 Vue 插件,用于在滚动时触发动画效果。它可以帮助开发者在用户滚动页面时,逐渐展示元素,增强用户体验。基本用法是通过在元素上添加特定的指…

IR21364的代替品SLM21364CF-DG:带过流保护、使能和故障反馈 高压三相半桥驱动芯片 神秘芯片背后的惊人力量

SLM21364CF-DG是一款高压、高速的三相功率MOSFET和IGBT驱动器。采用专有的高压集成电路和锁存免疫CMOS技术,提供可靠的单芯片驱动方案。逻辑输入电平与标准CMOS或LSTTL输出兼容,最低支持3.3V逻辑。通过检测外部电流电阻上电流,过流保护功能能…

nginx如何拦截未经授权的跳转

nginx如何拦截未经授权的跳转 背景准备好一个网站准备好引用网站配置nginx拦截效果 背景 在现实工作中往往有一些企业或人未取得授权但是转载或挂载我们的网址。那么有些要求严格或者有其他原因的情况下不希望这些链接正常访问。所以就有了这样的需求。前提是咱们的网站什么的是…

【深度学习】批量规范化

训练深层神经网络是十分困难的,光是之前简单的模型在简单的数据集上训练都不太轻松。 而批量规范化(batch normalization)是一种流行且有效的技术,可以帮助加快深层网络的收敛速度。 一、训练深层网络 我们回顾一下训练神经网络…

【第十三章:Sentosa_DSML社区版-机器学习之聚类】

目录 13.1 KMeans聚类 13.2 二分KMeans聚类 13.3 高斯混合聚类 13.4 模糊C均值聚类 13.5 Canopy聚类 13.6 Canopy-KMeans聚类 13.7 文档主题生成模型聚类 13.8 谱聚类 【第十三章:Sentosa_DSML社区版-机器学习之聚类】 13.1 KMeans聚类 1.算子介绍 KMeans…

【全新课程】正点原子《ESP32物联网项目实战》培训课程上线!

正点原子《ESP32物联网项目实战》全新培训课程上线啦!正点原子工程师手把手教你学!通过多个项目实战,掌握ESP32物联网项目的开发! 一、课程介绍 本课程围绕物联网实战项目展开教学,内容循序渐进,涵盖了环…

后台管理系统开箱即用的组件库!!【送源码】

今天给大家推荐几款的后台管理系统开箱即用的组件库,基于ElementUI二次封装,开发必备 Headless UI Headless UI 是一款出色的前端组件库,专为与 Tailwind CSS 集成而设计。一组完全无样式、完全可访问的 UI 组件,可以自由的引入…