【构建工具】现代开发的重要角色

你可能有所听闻构建工具,但是不知道是干什么的,或者是开发中用到了,大概会使用,但是想理解一下具体的工作原理等,那么我将分享一下我对其的理解。【 我将分为两篇来讲解】。


当我们谈到构建工具时,可以把它看作是开发者的“幕后大厨”,将各种原始材料(如代码文件、样式文件、图片等)加工成用户体验友好的“精致菜肴”。例如,压缩后的 CSS 文件能够减少网络加载时间,打包后的 JS 文件将分散的模块整合为一个优化的整体,从而提升用户访问的速度和流畅度。从代码转译到性能优化,构建工具是让开发效率更高、上线更顺利的关键角色。


一、什么是构建工具?

核心职责概述

构建工具主要涵盖以下几个方面的职责,它们与代码性能和开发者的开发体验息息相关:

  1. 代码转译:将现代代码(如 TypeScriptLESSSCSS)转换为浏览器可以直接运行的代码。例如,原来 TypeScript 使用 tsc 编译器进行编译,LESSSCSS 原本依赖于 lesscnode-sass 等工具,而现在通过 Vite 的内置支持,这些文件可以直接一步集成转换。同时,这种改进减少了切换工具的时间,节省了编译流程所需的复杂性,从而大大提高了开发效率。

  2. 模块打包:把分散的模块整合成少量文件,以减少网络请求,如将 importexport 转换为浏览器能够理解的逻辑。

  3. 性能优化

    • 压缩代码:去除多余空格和注释,减小文件体积。

    • 压缩图片:优化图片大小。

    • Tree-shaking:剔除无用代码。

  4. 提升开发体验

    • 实现热模块替换(HMR):页面无需刷新即可实时更新。

    • 提供本地开发服务器,快速查看效果。

构建工具的类型

  • 任务运行工具:如 Gulp,基于任务流,可以进行文件操作,如压缩、合并等。

  • 模块打包工具:如 WebpackRollupParcel,专注模块化开发,支持代码分割和懒加载。

  • 现代构建工具:如 ViteEsbuild,强调快速开发体验和高性能,利用浏览器的原生 ESM 功能。

二、构建工具的工作原理

构建工具的工作过程分为两大阶段:

开发阶段

  • 本地开发服务器:启动一个本地服务器,支持实时预览和修改。像 Vite 就是通过利用浏览器的原生模块化特性来实现“即时加载”。

  • 自动处理文件:例如 .vue 文件会被自动解析为合适的 HTML 和 JS,省去手动配置的麻烦。

构建阶段

  • 模块打包:构建工具会将分散在多个文件中的代码整合到一起,最终生成一个浏览器能直接加载的文件。

  • 压缩和优化:这时,构建工具会对代码进行压缩、图片优化、去除无用代码等操作,减少文件体积,提升加载速度。

三、Vite:速度之王

Vite 是专为现代开发设计的构建工具,以“快”为核心特性。从开发服务器的极速启动到热更新的微秒级响应,Vite 正在重塑前端开发流程。

核心优势

  1. 极速启动

    • Webpack 的局限:需要预先打包整个项目,启动速度与项目大小直接相关。

    • Vite 的创新:利用浏览器的 ESM 功能,只在模块被请求时才动态加载和编译

  2. 热模块替换(HMR)Vite 能精准定位并替换受影响的部分,而非重新编译整个模块

  3. 简化配置

    • 默认支持 VueReact 等现代框架,开箱即用。

    • 配置文件简单明了,易于定制。

  4. 轻量化构建:在生产环境中使用 Rollup 打包,支持 Tree-shaking,生成更小的文件。

“博主博主,什么是 Tree-shaking 呢?”


“不着急,那我来介绍一下”:

  • Tree-Shaking 是一种优化技术,主要用于在构建和打包过程中移除未被使用的代码,从而减少最终生成文件的体积。

  • 它的名字来源于一个形象的比喻:想象你的代码是一个“树”,树上有许多“枝叶”(代码模块或函数)。Tree-Shaking 就像摇动这棵树,把不需要的“枯叶”(未被使用的代码)摇下来,只留下那些真正“活跃”的部分。

Vite 与 Webpack 的对比

特性WebpackVite
启动模式预先打包整个项目按需加载模块
热模块替换(HMR)编译并替换整个模块按需加载并快速替换
配置复杂度较高简洁易用
打包性能项目越大越慢使用 Rollup,性能优异
  • Webpack

  • Vite

由这两张图我们可以看出,Webpack 就是需要预先打包整个项目再启动开发服务器。而 Vite 则是只在模块被请求时才动态加载和编译

四、Vite 脚手架 vs. Vite 本身

功能对比

功能Vite 脚手架Vite
作用初始化项目结构开发服务器与构建优化
使用方式npm create vite@latestnpm run devnpm run build
  • Vite 脚手架:相当于建筑中的脚手架,帮助搭建项目“地基”。

  • Vite:是实际施工所用的工具,用来切割、打磨和建造。

构建工具是现代前端开发中的关键,它们的使命就是提升开发效率、优化性能。从最初的简单任务运行工具,到如今强大的 Vite,构建工具不断进化,以满足日益增长的开发需求。无论你选择 Vite 还是 Webpack,都可以大大提升你的开发体验,节省大量时间和精力。


Vite 凭借快速的启动速度、极简的配置和优化的开发体验,成为了越来越多开发者的首选。而 Webpack 的强大功能和生态也依然在许多复杂项目中发挥着重要作用。

下一篇我们就来重点讲解一下 Vite 这位万人迷

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

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

相关文章

【环境搭建】Jeecg-Boot v3.5.0 Docker搭建

前言 最近需要复现JeecgBoot的SQL注入漏洞,必须要搭建JeecgBoot v3.5.0这个版本才行,DockerHub没人push这个版本的,相关博客也比较少,所以自己来搭建,记录一下过程。 前置环境 Ubuntu 20.04Docker version 27.3.1do…

如何通过编译器标志增强移动应用的安全性

作为一名 Android 或 iOS 开发者,您可能已经熟悉一些常见的安全开发最佳实践,比如验证外部输入、合理管理内存以及避免使用弱加密算法。然而,即便是最精心编写的代码,也可能包含一些 bug,其中一些可能会导致可被利用的…

华为eNSP:VRRP

一、VRRP背景概述 在现代网络环境中,主机通常通过默认网关进行网络通信。当默认网关出现故障时,网络通信会中断,影响业务连续性和稳定性。为了提高网络的可靠性和冗余性,采用虚拟路由冗余协议(VRRP)是一种…

前端请求后端接口报错(blockedmixed-content),以及解决办法

报错原因:被浏览器拦截了,因为接口地址不是https的。 什么是混合内容(Mixed Content) 混合内容是指在同一页面中同时包含安全(HTTPS)和非安全(HTTP)资源的情况。当浏览器试图加载非…

【随心记】---- vue表格n-form中自定义增加必填星号

【如上图所示】&#xff1a;自定义增加星号样式 【思路】&#xff1a; 通过插槽实现 【代码】&#xff1a;通过vue的插槽实现自定义样式 <n-form-item-gi label"提示函正文" path"fileList" :span"12"><template #label><div>…

元宇宙时代的社交平台:Facebook的愿景与实践

随着科技的不断进步&#xff0c;元宇宙&#xff08;Metaverse&#xff09;这一概念逐渐走进了人们的视野。作为全球最大的社交平台之一&#xff0c;Facebook&#xff08;现Meta&#xff09;在这场元宇宙革命中扮演着重要角色。Meta不仅在不断扩展其社交平台的边界&#xff0c;还…

HtmlRAG开源,RAG系统联网搜索能力起飞~

网络是RAG系统中使用的主要外部知识来源&#xff0c;许多商业系统&#xff0c;如ChatGPT和Perplexity&#xff0c;都使用网络搜索引擎作为他们的主要检索系统。传统的RAG系统将网页的HTML内容转换为纯文本后输入LLM&#xff0c;这会导致结构和语义信息的丢失。 HTML转换为纯文…

人工智能大语言模型起源篇(一),从哪里开始

序言&#xff1a;许多人最初接触人工智能都是在ChatGPT火热之际&#xff0c;并且大多停留在应用层面。对于希望了解其技术根源的人来说&#xff0c;往往难以找到方向。因此&#xff0c;我们编写了《人工智能大语言模型起源篇》&#xff0c;旨在帮助读者找到正确的学习路径&…

摆脱B端UI框架的桎梏,首先从布局开始

在 B 端开发中&#xff0c;UI 框架虽带来便利&#xff0c;但也可能形成桎梏。要摆脱这种束缚&#xff0c;首先从布局着手是个明智之举。传统的 B 端 UI 框架布局可能较为固定&#xff0c;缺乏灵活性。我们可以尝试创新的布局方式&#xff0c;如响应式设计&#xff0c;适应不同屏…

上海亚商投顾:创业板指震荡调整 机器人概念股再度爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日冲高回落&#xff0c;深成指、创业板指盘中跌超1%&#xff0c;尾盘跌幅有所收窄。机器人概念股逆势爆…

yarn 安装问题

Couldn’t find package “regenerator-runtime” on the “npm” registry. Error: Couldn’t find package “watch-size” on the “npm” regist 标题Error: Couldn’t find package “babel-helper-vue-jsx-merge-props” on the “npm” registry. Error: Couldn’t f…

【AI知识】过拟合、欠拟合和正则化

一句话总结&#xff1a; 过拟合和欠拟合是机器学习中的两个相对的概念&#xff0c;正则化是用于解决过拟合的方法。 1. 欠拟合&#xff1a; 指模型在训练数据上表现不佳&#xff0c;不能充分捕捉数据的潜在规律&#xff0c;导致在训练集和测试集上的误差都很高。欠拟合意味着模…

flink终止提交给yarn的任务

接上文&#xff1a;一文说清flink从编码到部署上线 1.查看正在执行的flink 访问地址&#xff08;参考&#xff09;&#xff1a;http://10.86.97.191:8099/cluster/apps 2.终止任务 yarn application -kill appID 本文为&#xff1a; yarn application -kill application_17…

虚拟机如何使用物理机的公私钥

一、生成公私钥&#xff08;如果没有的话&#xff09; 使用如下指令生成 生成RSA公私钥 ssh-keygen 生成EdDSA公私钥 ssh-keygen -t ed25519 Windows目录 linux会直接生成在当前目录下。 二、导出 一般都是从windows系统导入到linux系统。 可以直接将公私钥文件复制到虚拟机…

太速科技-FMC154-基于FMC 八路SFP+万兆光纤子卡

FMC154-基于FMC 八路SFP万兆光纤子卡 一、板卡概述 本卡是一个FPGA夹层卡&#xff08;FMC&#xff09;模块&#xff0c;可提供高达8个SFP / SFP 模块接口&#xff0c;直接插入千兆位级收发器&#xff08;MGT&#xff09;的赛灵思FPGA。支持业界标准的小型可插拔&#xff0…

麒麟系统+达梦数据库+MybatisPlus+Redis+SpringBoot

环境准备 麒麟系统 在麒麟系统官网进行下载镜像 这里选择的是麒麟V10桌面版&#xff0c;使用虚拟机启动 修改root密码 # 启动到单用户模式 init 1 # 修改 root 密码 passwd root # 重启 reboot达梦数据库准备 进入达梦官网 我这里选择的是达梦数据库管理系统DM8开发版 下…

路由引入问题(双点双向路由回馈问题)

简介 总所周知&#xff0c;路由引入import又称路由重分发redistribute&#xff0c;为了解决不同路由协议进程间路由信息不互通而使用的技术&#xff0c;由于不同路由协议的算法、机制、开销等因素的差异&#xff0c;它们之间无法直接交换路由信息。因此&#xff0c;路由引入技…

Ubuntu 22.04安装Nessus(离线激活模式)

Ubuntu 22.04安装Nessus 一、 Nessus 简介二、Nessus下载安装三、激活Nessus四、创建一个基础扫描五、 破解Nessus只能扫描16个地址的限制六、更新插件 一、 Nessus 简介 Nessus 官网&#xff1a; https://www.tenable.com/ Nessus号称世界上最流行的扫描程序&#xff0c;Nessu…

ssd202d-badblock-坏块检测

这边文章讲述的是坏快检测功能 思路&#xff1a; 1.第一次烧录固件会实现跳坏块&#xff0c;但是后续使用会导致坏块的产生&#xff1b; 于是我在uboot环境变量添加了两个变量来控制坏快 lb_badnum //坏块个数 lb_badoff //坏块所在位置 2.第一次开机会根据lb_badnum是否…

泷羽Sec-Burp Suite自动刷漏洞-解放双手

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…