目前最流行的前端构建工具,你知道几个?
现在的市面上有很多不同的前端构建工具,我们很难对它们一一进行关注。在本文中,我们将重点介绍最受欢迎的几种,并探讨开发人员喜欢或不喜欢它们的原因。
Webpack
Webpack 是一个模块打包器,主要用于处理 Web 应用程序的资源的优化、捆绑和转换(如 JavaScript、CSS、图片等)。它将所有应用程序中的资源视为模块,并将这些模块组合成一个或多个打包后的输出文件。它还能够帮助开发者组织和管理复杂的前端项目,提高性能,并支持现代开发流程。
官网链接
✅优点:
- 拥有模块化支持:Webpack 支持多种模块化语法,包括 ES6 模块、CommonJS 和 AMD。
- 代码分割:Webpack 可以将应用程序拆分成多个块,从而实现按需加载。这提高了应用程序的性能,
- 丰富的插件生态:Webpack 有丰富的插件生态系统,可以满足各种不同的构建需求。
- 多样的加载器:Webpack 支持加载器来处理各种类型的文件,这使得开发者可以在构建过程中执行各种转换和处理。
- 热模块替换(HMR) :Webpack 支持热模块替换,可以在不刷新整个页面的情况下实时更新应用程序的部分。
- 社区生态成熟:Webpack 是一个非常流行的前端构建工具,因此有大量的文档、社区支持和资源可用。
❌缺点:
- 学习曲线:Webpack 的配置可以相对复杂,对初学者不友好。
- 构建速度:在处理大型项目时,Webpack 的初始构建速度可能较慢。
Vite
官网链接
Vite 是一个现代化的前端构建工具,强调快速开发体验。Vite 利用浏览器的原生 ES 模块加载功能。在开发过程中,Vite 使用浏览器的 ES 模块加载功能来动态地加载模块,无需将模块捆绑在一起,从而减少了冷启动和热模块替换的延迟。
特点: Vite 最初是为 Vue.js 开发的,因此在 Vue.js 项目中表现尤为卓越。
✅优点:
- 极速的开发服务器,冷启动和热模块替换迅速。
- 原生 ES 模块加载,无需复杂的模块转换和捆绑。
- 零配置的默认设置,对新手友好。
- 生成的打包文件体积小。减少加载时间,提高性能
❌缺点:
- 不适用于复杂的大型项目。
- 社区生态不完善。
Rollup
官网链接
Rollup 是一个面向 ES6 模块的模块打包器,主要用于构建 JavaScript 库。它专注于生成小而高效的输出,适用于发布库或组件。
✅优点:
- 专注于 ES6 模块,生成优化的输出
- 适用于构建库或组件,减少不必要的代码。
- 轻量级,性能好。
- Rollup 的树摇功能可以识别和删除未使用的代码,使得生成的代码更加精简。
❌缺点:
- Rollup 的优势在于构建库和组件,不适用于构建复杂应用程序
- 配置和插件需要更多的手动配置。
- 社区生态不完善。
Gulp
官网链接
Gulp 是一个基于任务的构建工具,通过编写任务来定义构建过程。它可以处理各种任务,如文件合并、压缩、转换等。
✅优点:
- 灵活,我们可以自定义各种任务。
- 插件丰富,可以帮助我们应对多种构建需求。
- 适用于自动化和定制化的构建流程。
❌缺点:
- 配置复杂,需要逐个编写任务。
- 需要我们手动配置和设置。
Parcel
官网链接
Parcel 是一个零配置的前端构建工具,旨在简化构建过程。它自动分析项目中的依赖关系,并根据需要进行转换和打包。
✅优点:
- 零配置,省去了繁琐的配置过程。
- 可以自动分析依赖关系,可以帮助我们快速构建。
- 内置支持多种类型的资源,如 HTML、CSS、JavaScript。
❌缺点:
- 配置选项有限,对于一些高级需求可能不太适合。
- 不适用复杂项目。
相关文章:

目前最流行的前端构建工具,你知道几个?
现在的市面上有很多不同的前端构建工具,我们很难对它们一一进行关注。在本文中,我们将重点介绍最受欢迎的几种,并探讨开发人员喜欢或不喜欢它们的原因。 Webpack Webpack 是一个模块打包器,主要用于处理 Web 应用程序的资源的优化…...
C++函数模板温习总结
函数模板 // 1、typename 在这里是类型重定义(typedef),而不是宏替换(#define) //2、模板的非类型参数,属性为const , 不允许修改 //3、函数模板不允许部分特例化,类模板可以 //4、模板函数和非模板函数重载,优先调用…...

【网络】套接字(socket)编程——TCP版
接着上一篇文章:http://t.csdnimg.cn/GZDlI 在上一篇文章中,我们实现的是UDP协议的,今天我们就要来实现一下TCP版本的 接下来接下来实现一批基于 TCP 协议的网络程序,本节只介绍基于IPv4的socket网络编程 基于 TCP 的网络编程开…...

水凝胶生物打印是什么?如何指导Organoids培养?有啥好处?
大家好,我们来了解这篇《Hydrogel-in-hydrogel live bioprinting for guidance and control of organoids and organotypic cultures》发表在《Nature Communications》的一篇文章。三维水凝胶基器官样培养,如类器官和体外器官型培养,能够自我…...

从springBoot框架服务器上下载文件 自定义一个启动器
在springboot框架中下载服务器存储的图片: 1)springboot默认访问放行的目录只有static,在static目录下存放图片资源 2)编译后的static目录中有一个1.png 2.5)编写控制器: Controller //RequestMapping("/upload&q…...

某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]
文章目录 某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议某通电子文档安全管理系统 CDGAuthoriseTempletService1接口SQL注入漏…...

pythonselenium自动化测试实战项目(完整、全面)
前言 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习。(注:项目是针对我们公司内部系统的测试,只能内部网络访问,外部网络…...

如何选择合适的虚拟机软件?对比Parallels Desktop 和VMware Fusion 使用虚拟机畅玩黑神话悟空
随着技术的发展,虚拟机软件将更加高效地管理和分配系统资源。虚拟机软件扮演着越来越重要的角色。无论是软件开发者需要测试不同操作系统环境下的应用,还是普通用户希望在一台机器上同时运行多个操作系统,虚拟机软件都是不可或缺的工具。那么…...
ESP32FreeRTOS开发笔记:2.定义、多任务与优先级调度
FreeRTOS 是一种实时操作系统(RTOS),专门用于嵌入式系统。它之所以被称为 "FreeRTOS",是因为它是一个免费和开源的 RTOS。下面我们具体讨论一下 FreeRTOS 与 RTOS 的区别,以及 "free" 的含义。 一、什么是 RTOS? RTOS,全称 Real-Time Operating Sy…...

【Python-办公自动化】1秒比较出2张表格之间的不同并标黄加粗
欢迎来到"花花 Show Python",一名热爱编程和分享知识的技术博主。在这里,我将与您一同探索Python的奥秘,分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者,都能在这里找到有价值的信息和灵感。 自我介…...

Linux下查看各进程的swap
cat /etc/re*se Red Hat Enterprise Linux Server release 6.8 (Santiago) 简单的可以通过top命令查看 top 后 按 f 进入选择列界面 按 p 就会输出swap信息(变为P) 回车返回看到SWAP信息了 再按 F 再按p 按swap排序 再回车后就是各进程按swap排序…...
最后一个单词的长度 简单字符串问题
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s "Hello World" 输出:5 解…...

Autodesk Mudbox 2024:重塑创意边界的3D数字绘画与雕刻利器
在数字艺术与设计领域,Autodesk Mudbox 2024以其卓越的性能和直观的操作界面,再次刷新了3D数字绘画与雕刻软件的标准。作为Autodesk家族的一员,Mudbox不仅继承了其家族强大的技术基因,更在细节上精雕细琢,为艺术家和设…...
【python下用sqlite3, 多线程下报错,原因和解决 】
在python下用sqlite3, 多线程 在UPDATE 或者INSERT的时候, 会报错 sqlite3.OperationalError: cannot commit - no transaction is active 1. 原因 多线程写冲突 非原子写操作:如果多个线程同时执行非原子写操作,可能会导致数据覆盖或不一致。 2. 解…...

学习记录——day30 网络编程 端口号port 套接字socket TCP实现网络通信
目录 一、端口号 port 二、套接字 socket 1、原理 2、socket函数介绍 三、TCP实现网络通信 1、原理 2、TCP通信原理图 3、TCP相关函数 1)bind 绑定 2)listen 监听 3)accept 接收连接请求 4)recv 接收 5)sen…...
【DataKit系列】数据迁移-实例搭建步骤(二)
说明:此文档仅包含使用DataKit进行数据迁移时,搭建迁移任务相关教程,不包含一些必须的前置配置步骤,和环境要求等,请优先学习“【DataKit系列】数据迁移-使用说明(一)”文档。 数据迁移实例搭建…...
发送jsonp请求(前后端如何实现)
发送jsonp请求(前后端如何实现) 前端 $.ajax({url: /api/jsonp,type: get,data: { id: 123 }, // 参数dataType: jsonp,jsonp: cb, // 回调函数的参数名jsonpCallback: successfn,// 回调函数contentType: "application/json; charsetutf-8",success: function(resp…...

Leetcode—1239. 串联字符串的最大长度【中等】(unordered_set)
2024每日刷题(155) Leetcode—1239. 串联字符串的最大长度 实现代码 class Solution { public:bool charSet(string & s) {unordered_set<char> charSet(s.begin(), s.end());// true表示有重复// false表示唯一return s.size() ! charSet.s…...

Spring Boot 3.x Rest API统一异常处理最佳实践
上一篇:Spring Boot 3.x Rest API最佳实践之统一响应结构 下一篇:Spring Boot 3.x Web单元测试最佳实践 参考著作:Error Handling for REST with Spring 在Spring MVC应用中,要对web表示层所抛出的异常进行捕获处理有多种方式&…...

线程的进阶学习
线程结束方式: 1.pthread_exit //pthread_join 2.从线程执行函数中return //此时效果等价于pthread_exit 3.pthread_cancel //线程可以被取消 4.任何一个线程调用了exit 或者 主线程 (main函数) return都会造成 进程结束 线程资源回收 ---pthread_join int pthread_ca…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...