【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.js

import './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 options
      include: '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.mfbz.cn/a/762532.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【笔记】手工部署之linux中开放已安装的mysql与tomcat端口

在需要打包的springboot项目中输入mvn clean package 在target下面获得jar包 进入linux中你想要该jar包存在的位置 将jar包上传至linux中 此时在浏览器中输入linux的ip地址&#xff1a;端口号/mapping路径为404 故&#xff1a; 在linux中另开一个标签页 检查mysql和tomcat已…

JavaFX布局-BorderPane

JavaFX布局-BorderPane 实现方式Java实现FXML实现 综合案例 将容器空间分成五个区域&#xff1a;顶部&#xff08;Top&#xff09;、底部&#xff08;Bottom&#xff09;、左侧&#xff08;Left&#xff09;、右侧&#xff08;Right&#xff09;和中心&#xff08;Center&#…

Java案例找素数(三种方法)

目录 一&#xff1a;问题&#xff1a; 二&#xff1a;思路分析&#xff1a; 三&#xff1a;具体代码&#xff1a; 四&#xff1a;运行结果&#xff1a; 一&#xff1a;问题&#xff1a; 二&#xff1a;思路分析&#xff1a; 三&#xff1a;具体代码&#xff1a; Ⅰ&#xf…

03 _ 类型基础(2):动态类型与静态类型

静态类型语言与动态类型语言 通俗定义 静态类型语言&#xff1a;在编译 阶段确定所有变量的类型 动态类型语言&#xff1a;在执行阶段确定所有变量的类型 Javascript 与 C 对比 静态类型与动态类型对比 其他定义 强类型语言&#xff1a;不允许程序在发生错误后继续执行 语…

【STM32】温湿度采集与OLED显示

一、任务要求 1. 学习I2C总线通信协议&#xff0c;使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集&#xff0c;并将采集的温度-湿度值通过串口输出。 任务要求&#xff1a; 1&#xff09;解释什么是“软件I2C”和“硬件I2C”&#xff1f;&#xff08;阅读野火配…

视频号视频怎么下载保存到手机,视频号视频如何下载到电脑本地

在数字化浪潮的推动下&#xff0c;视频号成为了我们获取信息、分享生活的重要平台。但有时候&#xff0c;我们遇到一些精彩的内容&#xff0c;想要保存下来以便日后观看&#xff0c;却发现视频号并不提供直接的下载功能。下面我就来为大家详细介绍视频号视频下载的方法&#xf…

Datax快速使用之牛刀小试

前言 一次我发现业务他们在用 datax数据同步工具&#xff0c;我尤记得曾经 19 年使用过&#xff0c;并且基于当时的版本还修复了个 BUG并且做了数据同步管道的集成开发。没想到时间过的飞快&#xff0c;业务方基于海豚调度 2.0.6 的版本中有在使用&#xff0c;由于业务方还没有…

大促前夕即高点,综合电商平台的“稀缺”魔法正在消失?

新一期618大促早已结束良久了&#xff0c;但似乎其产生的余韵却仍旧未消散。 从最直观的资本市场走势来看&#xff0c;自这一波618大促陆续开展之后&#xff0c;包括京东、阿里巴巴、拼多多等港美股股价就一改此前的上行态势&#xff0c;持续下滑至今。 事实上&#xff0c;早…

【计算机网络期末复习】例题汇总(一)

重点例题选择填空简答题与传输媒体的接口的特性重点 计算机网络的性能指标计算机网络体系结构例题 选择

【Linux】线程id与互斥(线程三)

上一期我们进行了线程控制的了解与相关操作&#xff0c;但是仍旧有一些问题没有解决 本章第一阶段就是解决tid的问题&#xff0c;第二阶段是进行模拟一个简易线程库&#xff08;为了加深对于C库封装linux原生线程的理解&#xff09;&#xff0c;第三阶段就是互斥。 目录 线程id…

【解锁未来:深入了解机器学习的核心技术与实际应用】

解锁未来&#xff1a;深入了解机器学习的核心技术与实际应用 &#x1f48e;1.引言&#x1f48e;1.1 什么是机器学习&#xff1f; &#x1f48e;2 机器学习的分类&#x1f48e;3 常用的机器学习算法&#x1f48e;3.1 线性回归&#xff08;Linear Regression&#xff09;&#x1…

【PYG】Planetoid中边存储的格式,为什么打印前十条边用edge_index[:, :10]

edge_index 是 PyTorch Geometric 中常用的表示图边的张量。它通常是一个形状为 [2, num_edges] 的二维张量&#xff0c;其中 num_edges 表示图中边的数量。每一列表示一条边&#xff0c;包含两个节点的索引。 实际上这是COO存储格式&#xff0c;官方文档里也有写&#xff0c;…

爬虫逆向实战(41)-某巢登陆(AES、MD5、RSA、滑块验证码)

一、数据接口分析 主页地址&#xff1a;某巢 1、抓包 通过抓包可以发现在登录时&#xff0c;网站首先请求captcha/querySlideImage/来获取滑块验证码的图片&#xff0c;然后请求captcha/checkCode/接口来验证滑块验证码。滑块验证码校验成功后&#xff0c;请求noshiro/getPu…

高性能LDO电路设计,有配套文档

内容&#xff1a; 1、电路文件&#xff08;有仿真状态&#xff09;和PDK&#xff08;TSMC180&#xff09; 2、配套仿真结果文档讲解6页 3、参考资料三篇 指标&#xff1a; LDO 温度系数1.09ppm LDO 环路增益在 64.3dB&#xff0c;相位裕度在 66&#xff0c;系统稳定。 LDO 最大…

抛弃 Neofetch?众多优秀替代方案等你体验!

目录 抛弃 Neofetch&#xff1f;众多优秀替代方案等你体验Neofetch 的替代品FastfetchscreenFetchmacchina 抛弃 Neofetch&#xff1f;众多优秀替代方案等你体验 NeoFetch 是用 Bash 3.2 编写的命令行系统信息工具&#xff0c;该项目的主要开发人员已将 GitHub 存储库存档&…

【漏洞复现】和丰多媒体信息发布系统 QH.aspx 任意文件上传漏洞

0x01 产品简介 和丰多媒体信息发布系统也称数字标牌&#xff08;Digital Signage&#xff09;&#xff0c;是指通过大屏幕终端显示设备&#xff0c;发布商业、财经和娱乐信息的多媒体专业视听系统&#xff0c;常被称为除纸张媒体、电台、电视、互联网之外的“第五媒体”。该系…

民生银行收大额罚单:信用卡中心一同被罚,管理层如何施救?

民生银行的2024年&#xff0c;再添变故。 近日&#xff0c;国家金融监管总局宁波分局公布了数则行政处罚信息公开表。内容显示&#xff0c;民生银行&#xff08;SH:600016、HK:01988&#xff09;宁波分行、民生银行信用卡中心宁波分中心因多项违法违规事实&#xff0c;共计被处…

【Git 学习笔记】Ch1.1 Git 简介 + Ch1.2 Git 对象

还是绪个言吧 今天整理 GitHub 仓库&#xff0c;无意间翻到了几年前自学 Git 的笔记。要论知识的稳定性&#xff0c;Git 应该能挤进前三——只要仓库还在&#xff0c;理论上当时的所有开发细节都可以追溯出来。正好过段时间会用到 Git&#xff0c;现在整理出来就当温故知新了。…

Redis集群-主从复制、哨兵

●主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。 主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。缺陷&#xff1a;故障 恢复无法自动化&#xff1b;写操作无法负载均…