Vite 打包原理

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》
💬 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

Vite 是一个现代化的前端构建工具,它提供了快速的开发服务器和高效的打包功能。Vite 的打包功能基于 Rollup,一个强大的 JavaScript 模块打包器。本文将深入探讨 Vite 的打包原理,帮助开发者更好地理解和使用这一工具。

1. Vite 的基本使用

首先,确保你已经安装了 Vite。如果还没有安装,可以通过 npm 或 yarn 进行安装:

npm init vite@latest
# 或者
yarn create vite

创建一个新项目后,你可以通过以下命令启动开发服务器:

npm run dev
# 或者
yarn dev

2. Vite 的打包流程

Vite 的打包流程主要包括以下几个步骤:

2.1 依赖预构建

Vite 使用 esbuild 进行依赖预构建。esbuild 是一个极快的 JavaScript 打包器,它可以将 CommonJS 模块转换为 ES 模块,并缓存构建结果以提高性能。

2.2 代码转换

Vite 使用 Rollup 进行代码转换。Rollup 是一个 JavaScript 模块打包器,它可以将多个模块打包成一个文件。Vite 使用 Rollup 的插件系统来处理各种文件类型,如 JavaScript、CSS、图片等。

2.3 代码优化

Vite 使用 Rollup 的插件系统进行代码优化。例如,可以使用 @rollup/plugin-terser 插件进行代码压缩。

2.4 生成打包结果

最后,Vite 将打包结果输出到指定的目录。默认情况下,打包结果输出到 dist 目录。

3. Vite 的打包配置

Vite 的打包配置基于 Rollup 的配置。你可以在 vite.config.js 文件中配置打包选项。以下是一些常用的配置选项:

3.1 入口和出口

你可以通过 build.rollupOptions.inputbuild.rollupOptions.output 配置入口和出口。

// vite.config.js
export default {build: {rollupOptions: {input: 'src/main.js',output: {dir: 'dist',format: 'es'}}}
}

3.2 插件

你可以通过 plugins 选项配置 Rollup 插件。

// vite.config.js
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';export default defineConfig({plugins: [vue()]
});

3.3 代码分割

你可以通过 build.rollupOptions.output.manualChunks 配置代码分割。

// vite.config.js
export default {build: {rollupOptions: {output: {manualChunks(id) {if (id.includes('node_modules')) {return id.toString().split('node_modules/')[1].split('/')[0].toString();}}}}}
}

4. 总结

Vite 的打包功能基于 Rollup,一个强大的 JavaScript 模块打包器。通过深入理解 Vite 的打包原理,开发者可以更好地利用这一工具,满足复杂的业务需求。希望本文对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言讨论。

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

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

相关文章

基于yolo的视频检测分析

基于yolo的视频检测分析 分步骤实现视频处理、目标检测与追踪、动作分析、计数逻辑,然后整合成API 完整的解决方案,包含视频分析逻辑和API封装,使用Python、YOLOv8和FastAPI实现代码如下: python代码实现 import os import uu…

探索C语言:寻找数组中连续1的最大长度

在编程的世界里,我们常常会遇到各种有趣的算法问题,今天让我们来深入剖析一段C语言代码,它的功能是在给定的整数数组中找出连续1的最大长度。 一、代码功能概述 这段代码定义了一个名为 findMaxConsecutiveOnes 的函数,它接受一个…

人工智能应用-智能驾驶精确的目标检测和更高级的路径规划

实现更精确的目标检测和更高级的路径规划策略是自动驾驶领域的核心任务。以下是一个简化的示例,展示如何使用Python和常见的AI库(如TensorFlow、OpenCV和A*算法)来实现这些功能。 1. 环境准备 首先,确保安装了以下库:…

归一化与伪彩:LabVIEW图像处理的区别

在LabVIEW的图像处理领域,归一化(Normalization)和伪彩(Pseudo-coloring)是两个不同的概念,虽然它们都涉及图像像素值的调整,但目的和实现方式截然不同。归一化用于调整像素值的范围&#xff0c…

MySQL8.0实现MHA高可用

一、简介 MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的master 节点&#xf…

记录 | WPF基础学习登录界面制作

目录 前言一、普通方式Step1 创建项目Step2 设计布局Step3 对剩余布局进行内容填充可执行代码下载 Step4 编写点击事件Step5 创建新WPF窗口Step6 简单写点Index内容Step7 跳转到Index当前代码下载 二、绑定方式绑定用户名【单向绑定】双向绑定代码提供 三、MVVM方式1&#xff1…

关于32位和64位程序的传参方法及虚拟机调试工具总结

一、传参方法对比 1. 32位程序 系统调用 (Linux) 使用int 0x80指令触发系统调用 寄存器传参顺序: eax 系统调用号 ebx 第1个参数 ecx 第2个参数 edx 第3个参数 esi 第4个参数 edi 第5个参数 普通函数调用 (C语言) 栈传递参数:参数从右向左压栈…

vivado 7 系列器件时钟

7 系列器件时钟 注释: 本章节以 Virtex -7 时钟源为例。 Virtex-6 的时钟资源与此类似。如果使用不同的架构,请参阅有关器件的 《时 钟资源指南》 [ 参照 40] 。 Virtex-6 和 Virtex-7 器件内含 32 个称为 BUFG 的全局时钟缓存。 BUFG 可满…

无须付费,安装即是完全版!

不知道大家有没有遇到过不小心删掉了电脑上超重要的文件,然后急得像热锅上的蚂蚁? 别担心,今天给大家带来一款超给力的数据恢复软件,简直就是拯救文件的“救星”! 数据恢复 专业的恢复数据软件 这款软件的界面设计得特…

Vue全流程--Vue2路由

引入路由的原因: 实现单页面应用(SPA) 什么是单页面应用: 1、点击跳转链接后直接在原本的页面展示。路径发生相应改变 2、整个应用只有一个完整页面 3、数据需要通过ajax获取 Vue2中的路由是什么: Vue2路由是一…

【图片合并转换PDF】如何将每个文件夹下的图片转化成PDF并合并成一个文件?下面基于C++的方式教你实现

医院在为患者进行诊断和治疗过程中,会产生大量的医学影像图片,如 X 光片、CT 扫描图、MRI 图像等。这些图片通常会按照检查时间或者检查项目存放在不同的文件夹中。为了方便医生查阅和患者病历的长期保存,需要将每个患者文件夹下的图片合并成…

Racecar Gym 总结

1.Racecar Gym 简介 Racecar Gym 是一个基于 PyBullet 物理引擎 的自动驾驶仿真平台,提供 Gymnasium(OpenAI Gym) 接口,主要用于强化学习(Reinforcement Learning, RL)、多智能体竞速(Multi-Ag…

【实战】excel分页写入导出大文件

类 RequestMapping("export")ResponseBodypublic void export(HttpServletResponse response) {long start System.currentTimeMillis();QueryVo query new QueryVo();// response响应头setResponseHeader(response, "excel");ExcelWriter writer Excel…

基于微信小程序的医院预约挂号系统的设计与实现

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生…

【机器学习】K-Nearest Neighbor KNN算法原理简介及要点

KNN算法用于分类 简介KNN分类算法的流程距离度量K值选择分类表决加权分类表决 简介 KNN的全称是K Nearest Neighbors. 这种算法可以被用来进行分类,原理是根据离特征点最近的K个点所属的类别进行分类。 KNN分类算法的流程 KNN算法的整体流程是我们需要将训练数据…

智体链:大语言模型协作完成长上下文任务

25年1月来自Penn State U和谷歌云的论文“Chain of Agents: Large Language Models Collaborating on Long-Context Tasks”。 解决有效处理长上下文的挑战已成为大语言模型 (LLM) 的关键问题。出现了两种常见策略:1)减少输入长度,例如通过检…

java s7接收Byte字节,接收word转16位二进制

1图: 2.图: try {List list getNameList();//接收base64S7Connector s7Connector S7ConnectorFactory.buildTCPConnector().withHost("192.168.46.52").withPort(102).withTimeout(1000) //连接超时时间.withRack(0).withSlot(3).build()…

机器学习在癌症分子亚型分类中的应用

学习笔记:机器学习在癌症分子亚型分类中的应用——Cancer Cell 研究解析 1. 文章基本信息 标题:Classification of non-TCGA cancer samples to TCGA molecular subtypes using machine learning发表期刊:Cancer Cell发表时间:20…

Redis --- 使用HyperLogLog实现UV(访客量)

UV 和 PV 是网站或应用数据分析中的常用指标,用于衡量用户活跃度和页面访问量。 UV (Unique Visitor 独立访客): 指的是在一定时间内访问过网站或应用的独立用户数量。通常根据用户的 IP 地址、Cookies 或用户 ID 等来唯一标识一个用户。示例&#xff1…

大学资产管理系统中的下载功能设计与实现

大学资产管理系统是高校信息化建设的重要组成部分,它负责记录和管理学校内所有固定资产的信息。随着信息技术的发展,下载功能成为提高资产管理效率的关键环节之一。 系统架构的设计是实现下载功能的基础。一个良好的系统架构能够确保数据的高效传输和存储…