【JavaScript脚本宇宙】探索前端打包利器:从Webpack到Esbuild的全面解析

即刻更新,无缝开发:六大打包工具的热重载实战指南

前言

在现代前端开发中,高效的模块打包工具对提高开发效率和代码质量起着至关重要的作用。本文将详细介绍六种流行的JavaScript打包工具:Webpack、Parcel、Vite、Snowpack、Rollup和Esbuild。每个工具都具有独特的功能和优势,特别是在热重载功能方面,这使得开发者能够即时看到代码的修改效果,从而大大提升开发体验。

欢迎订阅专栏:JavaScript脚本宇宙

文章目录

  • 即刻更新,无缝开发:六大打包工具的热重载实战指南
    • 前言
    • 1. Webpack:一个现代JavaScript应用程序的静态模块打包工具
      • 1.1 Webpack简介
        • 1.1.1 历史背景
        • 1.1.2 基本概念
      • 1.2 Webpack热重载功能
        • 1.2.1 热重载的定义
        • 1.2.2 实现原理
      • 1.3 配置Webpack热重载
        • 1.3.1 安装依赖
        • 1.3.2 配置文件示例
        • 1.3.3 常见配置选项
      • 1.4 实践中的Webpack热重载
        • 1.4.1 开发环境设置
        • 1.4.2 错误排查与调试
    • 2. Parcel:一个捆绑器,优秀的开发体验和极快的性能
      • 2.1 Parcel简介
        • 2.1.1 历史背景
        • 2.1.2 基本概念
      • 2.2 Parcel热重载功能
        • 2.2.1 热重载的定义
        • 2.2.2 实现原理
      • 2.3 配置Parcel热重载
        • 2.3.1 安装依赖
        • 2.3.2 配置文件示例
        • 2.3.3 常见配置选项
      • 2.4 实践中的Parcel热重载
        • 2.4.1 开发环境设置
        • 2.4.2 错误排查与调试
    • 3. Vite:下一代前端开发与构建工具
      • 3.1 Vite简介
        • 3.1.1 历史背景
        • 3.1.2 基本概念
      • 3.2 Vite热重载功能
        • 3.2.1 热重载的定义
        • 3.2.2 实现原理
      • 3.3 配置Vite热重载
        • 3.3.1 安装依赖
        • 3.3.2 配置文件示例
        • 3.3.3 常见配置选项
      • 3.4 实践中的Vite热重载
        • 3.4.1 开发环境设置
        • 3.4.2 错误排查与调试
    • 4. Snowpack:零配置快速打包工具
      • 4.1 Snowpack简介
        • 4.1.1 历史背景
        • 4.1.2 基本概念
      • 4.2 Snowpack热重载功能
        • 4.2.1 热重载的定义
        • 4.2.2 实现原理
      • 4.3 配置Snowpack热重载
        • 4.3.1 安装依赖
        • 4.3.2 配置文件示例
        • 4.3.3 常见配置选项
      • 4.4 实践中的Snowpack热重载
        • 4.4.1 开发环境设置
        • 4.4.2 错误排查与调试
    • 5. Rollup:用于构建库的JavaScript模块打包器
      • 5.1 Rollup简介
        • 5.1.1 历史背景
        • 5.1.2 基本概念
      • 5.2 Rollup热重载功能
        • 5.2.1 热重载的定义
        • 5.2.2 实现原理
      • 5.3 配置Rollup热重载
        • 5.3.1 安装依赖
        • 5.3.2 配置文件示例
        • 5.3.3 常见配置选项
      • 5.4 实践中的Rollup热重载
        • 5.4.1 开发环境设置
        • 5.4.2 错误排查与调试
    • 6. Esbuild:极快的JavaScript打包器与压缩工具
      • 6.1 Esbuild简介
        • 6.1.1 历史背景
        • 6.1.2 基本概念
      • 6.2 Esbuild热重载功能
        • 6.2.1 热重载的定义
        • 6.2.2 实现原理
      • 6.3 配置Esbuild热重载
        • 6.3.1 安装依赖
        • 6.3.2 配置文件示例
        • 6.3.3 常见配置选项
      • 6.4 实践中的Esbuild热重载
        • 6.4.1 开发环境设置
        • 6.4.2 错误排查与调试
    • 总结

1. Webpack:一个现代JavaScript应用程序的静态模块打包工具

1.1 Webpack简介

1.1.1 历史背景

Webpack诞生于2012年,由Tobias Koppers开发,目的是解决当时复杂的前端模块依赖管理问题。最初它只是一个简单的捆绑工具,但随着时间的推移,它逐渐发展成为一个功能强大的模块打包工具,被广泛应用于现代JavaScript应用程序开发中。

1.1.2 基本概念

Webpack的核心概念包括:

  • Entry: 入口点,指示Webpack从哪里开始构建依赖图。
  • Output: 输出配置,指示Webpack输出文件的生成位置和命名规则。
  • Loaders: 模块转换器,用于对模块进行转换处理,例如将ES6转为ES5,将TypeScript转为JavaScript等。
  • Plugins: 插件,用于扩展Webpack的功能,如优化打包结果、注入环境变量等。
  • Mode: 构建模式,分为developmentproduction两种,分别对应开发和生产环境。

更多详细信息,请参考Webpack官方文档.

1.2 Webpack热重载功能

1.2.1 热重载的定义

热重载(Hot Module Replacement,简称HMR)是一种在不刷新浏览器的情况下,实时更新代码变化的技术。通过热重载,开发者可以在开发过程中立即看到代码修改的效果,从而提高开发效率。

1.2.2 实现原理

热重载通过以下步骤实现:

  1. Webpack监视源文件的变化。
  2. 当检测到文件变化时,Webpack重新编译相关模块。
  3. 编译后的模块通过WebSocket或其他通信方式传输到浏览器。
  4. 浏览器接收到新的模块后,替换掉旧的模块,而无需刷新整个页面。

1.3 配置Webpack热重载

1.3.1 安装依赖

首先,你需要安装必要的依赖包:

npm install --save-dev webpack webpack-cli webpack-dev-server
1.3.2 配置文件示例

创建一个webpack.config.js文件,并添加如下配置:

const path = require('path');module.exports = {entry: './src/index.js',output: {filename: 'bundle.js',path: path.resolve(__dirname, 'dist'),},mode: 'development',devServer: {contentBase: path.join(__dirname, 'dist'),compress: true,port: 9000,hot: true, // 启用热重载},
};
1.3.3 常见配置选项
  • contentBase: 指定服务器提供静态文件的目录。
  • compress: 是否开启gzip压缩。
  • port: 开发服务器运行的端口号。
  • hot: 启用热重载功能。

1.4 实践中的Webpack热重载

1.4.1 开发环境设置

为了在开发环境中使用热重载,我们还需要在package.json中添加一个启动脚本:

{"scripts": {"start": "webpack serve --open"}
}

然后,在终端中运行以下命令启动开发服务器:

npm start

此时,Webpack开发服务器将在你设定的端口上运行,并且支持热重载。

1.4.2 错误排查与调试

即使配置正确,有时候也可能出现问题。以下是一些常见的错误和解决方案:

  1. 问题:热重载不起作用

    • 解决方案: 确认devServer.hot是否设置为true,并且确保插件和loader都支持HMR。
  2. 问题:控制台报错

    • 解决方案: 查看具体报错信息,可能是某些模块无法正确加载。检查相应的loader和插件配置是否正确。
  3. 问题:样式未更新

    • 解决方案: 如果使用CSS模块,确保相应的loader(如style-loadercss-loader)已正确配置。

例如,确保安装和配置了style-loadercss-loader

npm install --save-dev style-loader css-loader

webpack.config.js中添加相应的loader配置:

module.exports = {// 其他配置项...module: {rules: [{test: /\.css$/,use: ['style-loader', 'css-loader'],},],},
};

通过这些配置和实践步骤,你应该能够顺利地在项目中启用Webpack的热重载功能,从而大大提高开发效率。

更多详细信息,请参考Webpack Dev Server文档.

2. Parcel:一个捆绑器,优秀的开发体验和极快的性能

2.1 Parcel简介

2.1.1 历史背景

Parcel 是由 Devbest 开发的一款 JavaScript 应用打包器,于 2017 年首次发布。它旨在通过提供开箱即用的零配置体验,加速 Web 开发过程。Parcel 的设计目标是简化开发者的工作流程,同时提供卓越的性能。

2.1.2 基本概念

Parcel 利用现代浏览器和 Node.js 的特性,自动处理模块依赖和优化代码。其核心理念包括:

  • 零配置:默认情况下无需配置文件即可运行。
  • 模块热重载(HMR):实时更新代码,无需刷新页面。
  • 代码分割:自动进行代码拆分,提高加载速度。

2.2 Parcel热重载功能

2.2.1 热重载的定义

热重载(Hot Module Replacement, HMR)是一种在不重新加载整个页面的情况下,实时替换、更新模块内容的技术。它可以显著提高开发效率,尤其是在大型应用的开发过程中。

2.2.2 实现原理

Parcel 的热重载基于 WebSocket 和模块缓存机制。当源代码发生变化时,Parcel 会通知客户端更新对应模块,而无需重新加载整个页面。具体步骤包括:

  1. 检测代码变动。
  2. 构建新的模块版本。
  3. 通过 WebSocket 通知客户端。
  4. 客户端替换更新后的模块。

2.3 配置Parcel热重载

2.3.1 安装依赖

首先,你需要确保已安装 Node.js 和 npm。然后全局安装 Parcel:

npm install -g parcel-bundler

或者在项目中作为开发依赖安装:

npm install --save-dev parcel-bundler

更多信息请参考 Parcel 官方文档。

2.3.2 配置文件示例

创建一个简单的 HTML 文件,例如 index.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Parcel Tutorial</title>
</head>
<body><script src="./index.js"></script>
</body>
</html>

然后创建一个 JavaScript 文件,例如 index.js:

console.log('Hello, Parcel!');

接下来,在终端运行:

parcel index.html

Parcel 将自动处理依赖,并启动一个开发服务器,支持热重载。

2.3.3 常见配置选项

虽然 Parcel 默认不需要配置文件,但你可以在项目根目录下添加 .parcelrc 文件,以自定义配置。例如:

{"extends": "@parcel/config-default","transformers": {"*.js": ["@parcel/transformer-babel"]}
}

2.4 实践中的Parcel热重载

2.4.1 开发环境设置

在实际开发中,你可能希望将 Parcel 集成到 npm 脚本中。在 package.json 中添加以下脚本:

"scripts": {"dev": "parcel index.html"
}

然后运行:

npm run dev

Parcel 将启动开发服务器并启用热重载。

2.4.2 错误排查与调试

如果热重载功能未正常工作,可以按以下步骤排查问题:

  1. 检查依赖是否正确安装
    确保 parcel-bundler 已正确安装,并且没有冲突的依赖。

  2. 查看控制台错误信息
    打开浏览器的开发者工具,查看控制台输出的错误信息。

  3. 确保 WebSocket 连接正常
    热重载依赖 WebSocket 连接,确保网络连接正常,没有被防火墙或其他网络设备阻止。

以下是一个完整的 JavaScript 示例,用于测试 Parcel 的热重载功能:

// index.js
document.body.innerHTML = `<h1>${new Date().toLocaleTimeString()}</h1>`;
setInterval(() => {document.body.innerHTML = `<h1>${new Date().toLocaleTimeString()}</h1>`;
}, 1000);console.log('Module loaded');

每次保存 index.js 文件时,页面会自动更新,无需手动刷新。

了解更多详细信息,请访问 Parcel 官方文档。

3. Vite:下一代前端开发与构建工具

3.1 Vite简介

3.1.1 历史背景

Vite 是由 Vue.js 的作者尤雨溪(Evan You)创建的下一代前端开发与构建工具。它旨在解决传统构建工具如 Webpack 和 Parcel 在面对现代 JavaScript 应用时所面临的性能瓶颈和复杂性问题。

3.1.2 基本概念

Vite 的核心思想是利用浏览器原生的 ES 模块支持,以极快的速度启动开发服务器,并通过按需加载模块来提升开发体验。它主要包含两部分:

  • 开发服务器:基于原生 ES 模块的快速热重载。
  • 构建工具:基于 Rollup 的高效打包。

更多详细信息可以参考 Vite 官网。

3.2 Vite热重载功能

3.2.1 热重载的定义

热重载(Hot Module Replacement, HMR)是一种在不刷新整个网页的情况下,通过替换、添加或删除模块来实时更新应用程序的方法。这对于提高开发效率和用户体验非常有帮助。

3.2.2 实现原理

Vite 的热重载功能依赖于浏览器的 ES 模块特性。当源代码发生变化时,Vite 会通知浏览器重新请求变更的模块,并即时替换页面上的相应部分,而无需完全重载页面。

3.3 配置Vite热重载

3.3.1 安装依赖

首先,我们需要安装 Vite 及其依赖。可以使用 npm 或 yarn 来进行安装:

npm init @vitejs/app my-vite-app
cd my-vite-app
npm install

或者使用 Yarn:

yarn create @vitejs/app my-vite-app
cd my-vite-app
yarn
3.3.2 配置文件示例

Vite 的配置文件通常为 vite.config.js。这是一个简单的配置示例:

import { defineConfig } from 'vite'export default defineConfig({server: {hmr: true // 启用热重载}
})
3.3.3 常见配置选项

以下是一些常见的 Vite 配置选项:

  • root: 项目的根目录,默认为当前工作目录。
  • base: 公共基础路径,默认值为 /
  • server.hmr: 热重载配置,可以是布尔值或对象,用于自定义 HMR 行为。

更多配置选项可以参考 Vite 配置文档.

3.4 实践中的Vite热重载

3.4.1 开发环境设置

在实际开发过程中,我们通常需要启动开发服务器以启用热重载功能:

npm run dev

这将启动 Vite 开发服务器并开启热重载功能,你可以在控制台中看到类似如下的信息:

  VITE v2.0.0-beta.69  ready in 200 ms➜  Local:   http://localhost:3000/➜  Network: use `--host` to expose

此时,修改项目中的任意文件,浏览器会自动更新变更部分。

3.4.2 错误排查与调试

如果在使用 Vite 的热重载功能时遇到问题,可以通过以下步骤进行排查:

  1. 检查配置文件是否正确,确保 hmr 属性已启用。
  2. 查看控制台输出的错误信息,找到可能导致热重载失败的原因。
  3. 确认网络连接正常,如果是在局域网环境下使用,还需检查防火墙设置。

下面是一个简单的 JavaScript 示例,用于验证热重载功能:

// src/main.jsimport './style.css'const app = document.querySelector('#app')
app.innerHTML = `<h1>Hello Vite!</h1>`if (import.meta.hot) {import.meta.hot.accept(() => {console.log('HMR is working!')})
}

当你修改任何代码并保存时,浏览器将自动更新而无需手动刷新页面。

以上就是如何在 Vite 中配置和使用热重载功能的基本介绍。更多详细信息和高级用法可以参考 Vite 官方文档.

4. Snowpack:零配置快速打包工具

4.1 Snowpack简介

Snowpack 是一个现代的前端构建工具,旨在提供更快、更简单的开发体验。

4.1.1 历史背景

Snowpack 最早由 Pika 团队在2020年推出。其目标是解决传统捆绑工具(如 Webpack)的性能瓶颈,通过将模块按需加载来加速开发过程。

4.1.2 基本概念

Snowpack 使用一种称为“无捆绑”的开发模式,它直接在浏览器中使用原生 ES 模块。这意味着在开发过程中不进行任何捆绑,从而实现即时的文件更新和超快的构建速度。

4.2 Snowpack热重载功能

Snowpack 提供了内置的热重载功能,使开发者能够在编辑代码时立即看到变化,而无需手动刷新页面。

4.2.1 热重载的定义

热重载(Hot Module Replacement, HMR)是一种允许在应用程序运行时替换、添加或删除模块的功能,通常用于开发环境,以提升开发效率。

4.2.2 实现原理

Snowpack 的热重载基于 WebSocket 技术,当检测到文件变化时,服务器会通过 WebSocket 通知客户端更新特定的模块,而不需要重新加载整个页面。

4.3 配置Snowpack热重载

要在项目中使用 Snowpack 的热重载功能,需要先安装相关依赖并进行适当的配置。

4.3.1 安装依赖

首先,通过 npm 或 yarn 安装 Snowpack:

npm install --save-dev snowpack

或者:

yarn add --dev snowpack
4.3.2 配置文件示例

在项目根目录下创建 snowpack.config.js 文件,并添加如下内容:

// snowpack.config.js
module.exports = {mount: {public: '/',src: '/_dist_',},plugins: ['@snowpack/plugin-react-refresh', // 用于React项目的热重载],devOptions: {open: 'default',hmr: true,},
};
4.3.3 常见配置选项
  • mount:映射文件夹到 URL 路径。
  • plugins:插件列表,如 React 热重载插件。
  • devOptions:开发服务器选项,如自动打开浏览器(open)和启用热重载(hmr)。

4.4 实践中的Snowpack热重载

下面我们将展示如何在一个实际项目中配置和使用 Snowpack 的热重载功能。

4.4.1 开发环境设置

创建一个简单的 React 项目,并安装所需依赖:

npx create-react-app my-app
cd my-app
npm install --save-dev snowpack @snowpack/plugin-react-refresh

然后配置 snowpack.config.js 如上所示。

4.4.2 错误排查与调试

在开发过程中,如果遇到热重载不起作用,可以尝试以下步骤:

  1. 检查配置文件:确保 snowpack.config.js 中的路径和选项正确。
  2. 查看控制台输出:热重载功能依赖 WebSocket,确保没有相关错误信息。
  3. 确认依赖版本:某些插件可能与 Snowpack 版本不兼容,尝试更新依赖或查阅 官方文档 获取更多帮助。

例如,如果遇到以下错误:

[HMR] Hot Module Replacement is not enabled.

可能是 snowpack.config.js 中的 hmr 选项未启用,检查并修改配置:

devOptions: {hmr: true,
},

通过这些步骤,相信可以顺利配置并使用 Snowpack 的热重载功能,提高开发效率。

5. Rollup:用于构建库的JavaScript模块打包器

5.1 Rollup简介

5.1.1 历史背景

Rollup 是一个 JavaScript 模块打包器,最初于 2015 年由 Rich Harris 创建。它旨在将小块代码转换为更复杂的文件,如库或应用程序。与其他打包器如 Webpack 不同,Rollup 更专注于 ES6 模块系统,使开发者能生成高性能、无冗余的代码。

5.1.2 基本概念
  • 模块:独立的代码片段,可以通过 importexport 引入和导出。
  • 打包:将多个模块捆绑成一个文件或一组文件,优化加载和执行。
  • 插件:扩展 Rollup 功能的模块,例如热重载、代码压缩等。

更多信息请参考 Rollup 官方文档。

5.2 Rollup热重载功能

5.2.1 热重载的定义

热重载(Hot Module Replacement, HMR)是一种在应用程序运行时替换、添加或移除模块的技术。无需完全刷新页面,只更新变化的部分,从而大大提升开发效率。

5.2.2 实现原理

热重载依赖于服务端和客户端的双向通信,通过 WebSocket 协议,当代码发生变化时,服务器通知客户端应用更新模块。具体步骤如下:

  1. 文件变动监控:监听文件系统的变化。
  2. 触发事件:变动后通过 WebSocket 通知客户端。
  3. 应用更新:客户端接收到通知后,仅更新变化的模块,而不是整个页面。

5.3 配置Rollup热重载

5.3.1 安装依赖

首先,你需要安装必要的依赖项,包括 Rollup 和 热重载插件:

npm install --save-dev rollup rollup-plugin-hot
5.3.2 配置文件示例

以下是一个基本的 Rollup 配置文件 (rollup.config.js) 示例,启用了热重载功能:

import hot from 'rollup-plugin-hot';export default {input: 'src/main.js',output: {file: 'public/bundle.js',format: 'iife',sourcemap: true,},plugins: [hot({// HMR optionsinclude: 'src/**',}),],
};
5.3.3 常见配置选项
  • include: 指定需要热重载的文件路径模式。
  • exclude: 排除不需要热重载的文件路径模式。
  • hot: 启用热重载功能。

更多配置选项请参考 rollup-plugin-hot 文档。

5.4 实践中的Rollup热重载

5.4.1 开发环境设置

为了实现热重载,你还需要配置一个开发服务器。可以使用 live-server 或其他类似工具:

npm install --save-dev live-server

然后,在项目根目录下创建一个 server.js 文件:

const liveServer = require('live-server');liveServer.start({port: 8080,root: 'public',open: true,file: 'index.html',wait: 1000,logLevel: 2,
});

package.json 中添加一个脚本命令:

"scripts": {"start": "rollup -c -w & node server.js"
}

运行 npm start 即可启动带有热重载功能的开发服务器。

5.4.2 错误排查与调试

如果遇到热重载无法正常工作的情况,可以按以下步骤进行排查:

  1. 检查 WebSocket 连接: 确保浏览器控制台显示 WebSocket 连接成功。如果失败,确认服务器和客户端的配置是否一致。
  2. 日志输出: 在 Rollup 配置文件和服务器代码中添加日志,查看详细错误信息。
  3. 验证插件设置: 确认 rollup-plugin-hot 是否正确配置,路径匹配是否准确。

完整的调试代码示例如下:

import hot from 'rollup-plugin-hot';export default {input: 'src/main.js',output: {file: 'public/bundle.js',format: 'iife',sourcemap: true,},plugins: [hot({include: 'src/**',verbose: true, // 输出详细日志}),],
};

通过以上步骤,相信你能够顺利配置和使用 Rollup 的热重载功能,提高开发效率。

6. Esbuild:极快的JavaScript打包器与压缩工具

6.1 Esbuild简介

6.1.1 历史背景

Esbuild是由Evan Wallace在2020年发布的一个现代化的JavaScript打包器和压缩工具。它以其极快的构建速度而闻名,这主要归功于它使用Go语言编写,从而能充分利用多核CPU并行处理的优势。

6.1.2 基本概念

Esbuild的核心理念是尽可能高效地进行代码转换和打包,包括但不限于以下功能:

  • JavaScript 和 TypeScript 转换。
  • 模块打包。
  • 代码压缩和优化。
  • 支持树摇决(Tree Shaking)。

详细信息可以参考Esbuild官网。

6.2 Esbuild热重载功能

6.2.1 热重载的定义

热重载(Hot Module Replacement,HMR)是一种开发技术,使得应用程序在运行时动态替换模块,而无需完全刷新页面。这对于提升开发效率非常重要。

6.2.2 实现原理

Esbuild通过监视文件系统的变化并自动重新构建受影响的模块来实现热重载。当源文件发生变更时,Esbuild会快速重新编译并将更新后的模块注入到正在运行的应用中。

6.3 配置Esbuild热重载

6.3.1 安装依赖

首先,我们需要安装esbuild以及相关的插件。可以使用npm或者yarn进行安装:

npm install esbuild esbuild-serve --save-dev

或者

yarn add esbuild esbuild-serve --dev
6.3.2 配置文件示例

创建一个esbuild.config.js文件,用于配置Esbuild:

const esbuild = require('esbuild');
const { serve } = require('esbuild-serve');esbuild.build({entryPoints: ['src/index.js'],bundle: true,outdir: 'dist',sourcemap: true,plugins: [// 其他插件可以在这里添加]
}).then(() => {serve({servedir: 'dist',}, {});
}).catch(() => process.exit(1));
6.3.3 常见配置选项

在配置文件中,可以根据需求调整以下常见选项:

  • entryPoints: 入口文件路径,可以是单个文件或数组。
  • bundle: 是否启用模块打包。
  • outdir: 输出目录。
  • sourcemap: 是否生成源码地图,有助于调试。

更多配置选项请参考官方文档。

6.4 实践中的Esbuild热重载

6.4.1 开发环境设置

运行以下命令启动开发服务器,并开启热重载功能:

node esbuild.config.js

现在,可以访问http://localhost:8000查看应用程序的运行效果。修改src目录下的文件后,浏览器会自动刷新以反映最新的更改。

6.4.2 错误排查与调试

如果遇到问题,可以通过以下方式进行排查和调试:

  • 确认安装的依赖版本是否兼容。
  • 检查配置文件中的路径和选项是否正确。
  • 使用sourcemap选项生成调试信息,以便在浏览器中查看具体出错位置。

详细的错误诊断方法及常见问题解决方案可以参考官方指南。

总结

随着前端技术的不断进步,各种JavaScript打包工具也在快速发展。Webpack已经成为社区中使用最广泛的打包工具,其强大的插件系统和灵活的配置使它适用于各种复杂的项目。Parcel以其零配置和极简用法赢得了开发者的青睐。Vite作为新一代的前端工具,凭借其快速的冷启动时间和模块热替换特性取得了很好的口碑。Snowpack强调零配置和速度,为开发者提供了一种新的体验。Rollup则因其专注于库的打包而被广泛采用。最后,Esbuild以其惊人的打包速度和出色的性能表现迅速崛起。在实际应用中,这些工具的热重载功能显著提升了开发效率,使开发者能即时反馈和快速迭代。

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

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

相关文章

基于KDE下kcrash框架二次开发core dump工具

将kde下框架的源码编译后安装使用 配置环境和依赖 根据kcrash源码的cmakelist文件可知该项目的主要环境和依赖包括&#xff1a; qt6.6以上&#xff1b;EMC6.4&#xff08;KDE下EMC框架&#xff0c;其他地方没找到这个版本的EMC&#xff09;&#xff0c;KCoreAddons&#xff0…

HCIE实验这样玩太高级了吧?实现FRR+BFD+OSPF与BGP的联动

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 晚上好&#xff0c;我的网工朋友。 今天搞个HCIE实验玩玩&#xff0c;上回分享了个张总讲解的防火墙配置实验思路&#xff0c;后来还特地搞了个视…

GPT-4o文科成绩超一本线,理科为何表现不佳?

目录 01 评测榜单 02 实际效果 什么&#xff1f;许多大模型的文科成绩竟然超过了一本线&#xff0c;还是在竞争激烈的河南省&#xff1f; 没错&#xff0c;最近有一项大模型“高考大摸底”评测引起了广泛关注。 河南高考文科今年的一本线是521分&#xff0c;根据这项评测&…

python与matlab微分切片的区别

python python使用np中的linespace生成等间隔数值&#xff0c; import numpy as np numpy.linspace(start, stop, num50, endpointTrue, retstepFalse, dtypeNone, axis0)start&#xff1a;序列的起始值。stop&#xff1a;序列的结束值。如果 endpoint 为 True&#xff0c;该…

代码随想录算法训练营第55天 [ 42. 接雨水 84.柱状图中最大的矩形]

代码随想录算法训练营第55天 [ 42. 接雨水 84.柱状图中最大的矩形] 一、42. 接雨水 链接: 代码随想录. 思路&#xff1a;找到左边第一个大于我的和右边第一个大于我的 做题状态&#xff1a;看解析后做出来了 //暴力法&#xff08;会超时&#xff09; class Solution { public:i…

CesiumJS【Basic】- #043 绘制脉冲线(Entity方式)- 需要自定义着色器

文章目录 绘制脉冲线(Entity方式)- 需要自定义着色器1 目标2 代码2.1 main.ts3 资源文件绘制脉冲线(Entity方式)- 需要自定义着色器 1 目标 使用Entity方式绘制脉冲线 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium.Viewer(cesiumCont…

【TB作品】打地鼠游戏,ATMEGA16单片机,Proteus仿真 打地鼠游戏

11个按键LCD1602显示器9个灯蜂鸣器打地鼠小游戏就是九个灯泡&#xff0c;对应九个按键&#xff0c;灯泡有红黄蓝&#xff0c;每间隔一会儿就会亮一个灯&#xff0c;代表地鼠冒出来&#xff0c;按一下按键让灯泡灭掉代表打地鼠&#xff0c;红的三分&#xff0c;黄的两分&#xf…

一句话介绍什么是AI智能体?

什么是AI智能体&#xff1f; 一句话说就是利用各种AI的功能的api组合&#xff0c;完成你想要的结果。 例如你希望完成一个关于主题为啤酒主题的小红书文案图片&#xff0c;那么它就可以完成 前面几个步骤类似automa的组件&#xff0c;最后生成一个结果。

面试突击指南:Java基础面试题4

1. HTTP响应码有哪些 HTTP响应码分为以下几类: 1xx(临时响应):表示请求已被接收,继续处理。2xx(成功):表示请求已成功被服务器接收、理解、并接受。3xx(重定向):表示需要进一步的操作以完成请求。4xx(客户端错误):表示请求包含错误或无法被服务器处理。5xx(服务…

RIP 路由 3 个定时器的工作流程和 4 种防环方法

RIP 路由 3 个定时器的工作流程 根据 RFC2453, RIP 协议一共定义了 3 种定时器&#xff0c;分别是&#xff1a; ・更新定时器 (Update Timer) ・老化定时器 (Age Timer) ・垃圾收集定时器 (Garbage-collectTimer) RIP 的更新信息发布是由更新定时器控制的&#xff0c;默认…

IT专业入门——高考假期预习指南,我来做你的引路人

目录 认识IT知识体系 什么是计算机 按规模、速度和功能分类 按照其工作模式分类 硬件 操作系统 编程语言 对学习语言的一点建议 对于学python的一点看法 网络 数据结构与算法 数据库 Web开发 Web前端 Web后端 基础预习指南 技术路线学习一览 学习资源推荐 刷…

spring interceptor失效

适用方式 增加interceptor&#xff0c;implements HandlerInterceptor&#xff0c;实例如下 Slf4j public class AccessInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object han…

开放式耳机哪个品牌最好?2024精选5款热门品牌,新手必看的开放式耳机指南!

最近想买开放式耳机&#xff0c;但面对众多品牌和型号&#xff0c;真的太难挑选了&#xff1f;别担心&#xff0c;作为耳机发烧友和测评专家&#xff0c;我为大家带来了几款热门开放式耳机的横向对比。从6个方面告诉大家怎么样去挑选开放式耳机&#xff0c;并且推荐了几款我觉得…

在C++中什么是异常处理以及如何使用try-catch块

在C中&#xff0c;异常处理是一种处理运行时错误&#xff08;如内存分配失败、无效的用户输入等&#xff09;的机制。它允许程序在出现错误时优雅地处理&#xff0c;而不是简单地崩溃。异常处理的核心组件是try、catch和throw。 throw&#xff1a;这是用来抛出异常的语句。当某…

深度学习 --- stanford cs231学习笔记八(训练神经网络之dropout)

6&#xff0c;dropout 6&#xff0c;1 线性分类器中的正则化 在线性分类器中&#xff0c;我们提到过正则化&#xff0c;其目的就是为了防止过度拟合。例如&#xff0c;当我们要用一条curve去拟合一些散点的数据时&#xff0c;常常是不希望训练出来的curve过所有的点&#xff0c…

<电力行业> - 《第1课:电力行业的五大四小》

1 什么是电力行业的五大四小&#xff1f; 我们常说的电力行业的五大四小&#xff0c;指的是电力行业有实力的公司&#xff0c;分为&#xff1a;较强梯队的五大集团、较弱梯队的四小豪门。 五个实力雄厚的集团&#xff0c;分别是&#xff1a; 中国华能集团公司中国大唐集团公…

文件操作~

目录 1.为什么使用文件&#xff1f; 2.什么是文件&#xff1f; 2.1 程序文件 2.2 数据文件 2.3 文件名 3.⼆进制文件和文本文件&#xff1f; 4.文件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 文件指针 4.3 ⽂件的打开和关闭 5.文件的顺序读写 5.1 …

QT+winodow 代码适配调试总结(二)

已经好多年了&#xff0c; linux环境下不同版本的QT程序开发和部署&#xff0c;突然需要适配window环境程序调试&#xff0c;一堆大坑&#xff0c;还真是一个艰巨的任务&#xff0c;可是kpi下的任务计划&#xff0c;开始吧&#xff01;&#xff01; 1、首先我们自定义的动态库…

【PYTORCH,TENSORFLOW环境配置,安装,自用代码】

conda -V&#xff08;查看版本&#xff0c;这步不要也罢&#xff09; conda create -n test python3.7&#xff08;创建环境&#xff09; conda activate test&#xff08;激活&#xff09; conda env list&#xff08;查看自己的环境&#xff09; nvidia-smi&#xff08;查…

以太网电缆专家手册:掌握RJ45连接器压接的艺术与科学

在这个日新月异的数字时代&#xff0c;正确的连接方式至关重要&#xff0c;而RJ45连接器正是实现这一点的关键工具之一。无论您是在家中布置办公网络&#xff0c;还是在公司部署复杂的IT基础架构&#xff0c;或是进行任何需要设备间高效数据传输的活动&#xff0c;掌握如何正确…