前端模块打包之Webpack

2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中) 什么是模块?模块是一个封装了特定功能的代码块,可以独立开发、测试和维护。模块通过导出(export)和导入(import)与其他模块通信,保持内部细节的封装。前端 JavaScript 模块化是指将代码拆分为独立的模块,每个模块负责特定的功能或逻辑。模块化的主要目的是提高代码的可维护性、可复用性和可扩展性。模块化让开发者能够组织代码,使之更加清晰、结构化,并且可以减少命名冲突和全局变量污染。模块化优势提高可维护性:模块的分离使代码更易于管理,修改或调试时只需专注于特定模块。 阅读详情

前言

这里总结一下,自己在学习webpack时,比较疑惑的地方

1、什么是webpack?

webpack是前端模块化打包工具,它把一切都看成模块,比如css、js、图片文件等都可以看成模块,再通过一些loader(加载器)和plugin(插件)对资源进行处理,打包成符合生产环境的前端资源。

2、为什么需要webpack?

  • 多模块文件依赖,增加代码复用性

    传统引入资源类似这种形式,没有模块化关系。

    <body>
        <script type="text/javascript" src="a.js"></script>
        <script type="text/javascript" src="b.js"></script>
        <script type="text/javascript" src="c.js"></script>
    </body>
    

    引入模块化关系

    // mathUntil.js
    function sum(num1, num2) {
          return num1 + num2;
      }
      function mul(num1, num2) {
          return num1 * num2;
      }
      export {
          sum,
          mul
      }
    
     
    // main.js
    // 使用
     const {
          sum,
          mul
      } = require("./js/mathUtil.js")
      console.log(sum(10, 20));
      console.log(mul(2, 4));
    

    image-20210602004047295

    image-20210601233631162

还可以使用import

// 举个栗子
// a.js
export default function (a, b) {
    return a + b;
}

// index.js
import sum from 'a.js';
// 使用
console.log(sum(1,2))// 3
  • 打包拓展语言

    一般情况下CSS的预处理语言Less、Scss,以及ES6+的一些语法(模块化import、export等),浏览器还不能直接运行并显示处理,所以需要webpack打包成符合浏览器识别显示的格式。

  • 提供一些功能强大的loader(加载器)、plugin(插件),减少代码量或者便于项目维护

3、常见的Loader

  • file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件
  • url-loader:和 file-loader 类似,但是能在文件很小的情况下以 base64 的方式把文件内容注入到代码中去
  • source-map-loader:加载额外的 Source Map 文件,以方便断点调试
  • image-loader:加载并且压缩图片文件
  • babel-loader:把 ES6 转换成 ES5
  • css-loader:加载 CSS,支持模块化、压缩、文件导入等特性
  • style-loader:把 CSS 代码注入到 JavaScript 中,通过 DOM 操作去加载 CSS。
  • eslint-loader:通过 ESLint 检查 JavaScript 代码

4、常见的Plugin

  • define-plugin:定义环境变量
  • commons-chunk-plugin:提取公共代码
  • uglifyjs-webpack-plugin:通过UglifyES压缩ES6代码

5、webpack的构建流程

明白webpack的构建流程之前,得先了解一下

entry 入口起点

Chunk 可以理解成多个模块合并成的代码块

  • 初始化参数:从配置文件和 Shell 语句中读取与合并参数,得出最终的参数;
  • 开始编译:用上一步得到的参数初始化 Compiler 对象,加载所有配置的插件,执行对象的 run 方法开始执行编译;
  • 确定入口:根据配置中的 entry 找出所有的入口文件;
  • 编译模块:从入口文件出发,调用所有配置的 Loader 对模块进行翻译,再找出该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理;
  • 完成模块编译:在经过第4步使用 Loader 翻译完所有模块后,得到了每个模块被翻译后的最终内容以及它们之间的依赖关系;
  • 输出资源:根据入口和模块之间的依赖关系,组装成一个个包含多个模块的 Chunk,再把每个 Chunk 转换成一个单独的文件加入到输出列表,这步是可以修改输出内容的最后机会;
  • 输出完成:在确定好输出内容后,根据配置确定输出的路径和文件名,把文件内容写入到文件系统。
前端工程化必备:Webpack模块化打包原理与实践 本文旨在帮助前端开发者深入理解Webpack的工作原理,掌握其核心概念和配置方法,并能够在实际项目中灵活运用Webpack解决工程化问题。文章涵盖从基础概念到高级用法的完整知识体系。本文将首先介绍模块化发展的历史背景,然后深入解析Webpack的核心概念和工作原理,接着通过实际案例演示配置和使用方法,最后探讨Webpack在前端工程化中的最佳实践和未来发展趋势。模块化:将程序分解为独立、可复用的代码单元的开发方式打包:将多个模块及其依赖合并为一个或多个文件的过程代码分割。 阅读详情

相关推荐

Webpack基础:前端模块打包工具

Webpack是一个现代化的前端构建工具,它的主要作用是将多个模块打包成一个或多个静态资源文件。通过Webpack,我们可以将前端项目中的各种资源文件进行模块化管理,并通过依赖关系自动构建出最终的打包文件。模块化支持:Webpack支持使用模块化的方式组织代码,可以将项目拆分为多个模块,使得代码更易于维护和复用。代码转换:Webpack可以将各种类型的文件(如JavaScript、CSS、图片等)转换为浏览器可识别的静态资源。代码分割:Webpack支持将代码分割成多个块,实现按需加载,提高页面加载速度。

BgScratch的博客 161

前端-webpack概述

webpack 是什么 webpack 五个核心概念 webpack 是什么 webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。在 webpack 看来,前端的所有资源文件(js/json/css/img/less/…)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)。 webpack 五个核心概念 Entry 入口(Entry)指示 webpack 以哪个文件为入口起点开始打包,分析构建内部依赖图。 Out.

Apple_Coco的博客 459

【前端之旅】Webpack模块打包工具

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。从图中我们可以看出,Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求。

请你喝杯Java 3644

webpack是什么

窗外望去 街道行人匆匆 无一是我的归宿

Js_qishiruhong的博客 1998

探索前端领域Webpack的模块打包机制

在现代前端开发中,随着项目规模的不断扩大,前端代码变得越来越复杂,包含了大量的JavaScript、CSS、图片等资源。这些资源之间存在着复杂的依赖关系,为了更好地管理和优化这些资源,提高代码的可维护性和性能,模块打包工具应运而生。Webpack作为目前最流行的前端模块打包工具之一,它能够将多个模块打包成一个或多个文件,减少浏览器的请求次数,提高页面加载速度。本文的目的是深入探索Webpack的模块打包机制,详细介绍其核心概念、算法原理、实际应用等方面的内容。

小白菜的博客 770

Webpack与Rollup:现代前端模块打包技术解析

本文将深入探讨Webpack和Rollup两种流行的前端模块打包工具。我们将探索Webpack如何处理多入口打包、模块加载配置、依赖解析,以及如何使用webpack-dev-server进行开发调试。同时,我们也会分析Rollup如何通过Tree-shaking优化打包过程,它的配置方法、命令行使用,以及如何利用插件扩展打包功能。通过比较这两种工具的特点和优势,希望能为读者在选择打包工具时提供有价值的参考。

weixin_42584586的博客 338

什么是Webpack?(详细介绍)

Webpack​ webpack主要是打包,所以其核心存在两个部分,入口和出口,你可以把webpack加工想象成香肠加工厂,就是活猪进去,香肠出来的那种,但是如果每次加工都需要员工亲力亲为,那多麻烦那,所以我们考虑到了自动化配置。webpack存在功能类似的配置文件,让webpack通过配置,全自动的执行我们需要的编译操作。 ​ ​webpack分成四个部分,期中最核心的就是入口和出口,当然在入口和出口配置的同时我们还需要一些加载器和插件,这就是我们所谓的webpack配置文件。这个配置文件我们习惯把其命

HanXiaoXi_yeal的博客 2万+

Webpack 4前端模块打包工具入门与实践

Webpack 4自发布以来,一直是前端构建工具领域中的一大里程碑。它不仅简化了构建流程,还增强了性能,特别是通过零配置(Zero-Configuration)引入了mode选项,能够自动优化构建结果,使得新手与专家都能从中受益。:用于将 ES6+ 的 JavaScript 代码转换为 ES5 代码。这在生产环境中是必不可少的,因为并非所有的浏览器都支持最新版本的 JavaScript 语法。

weixin_36059856的博客 679

前端基础知识之 Webpack

loader让webpack能够去处理那些非JS文件的模块,例如CSS与图片文件。

不知名人士的博客 1231

Tiny windows 11 安装与部署

需要注意,安装完后键入 windows 键,输入 update 先更新系统。点击开始,等待完成即可,用户可自定义。

m0_73351035的博客 9045

农业杂草检测——棉花杂草数据集

然后将本层13×13的特征图谱经过×2上采样扩充到26×26,并与上层中26×26的特征图谱拼接,得到新的26×26的特征图谱,在该特征尺度上进行第二次预测,此时得到的特征图谱是相对输入图像16倍下采样,具有中尺度感受野,适合检测中等尺度对象;通过目标检测,能够及时清除杂草,减少病虫害的滋生和传播,保障棉花的健康生长,并有助于降低生产成本。对于地膜覆盖的棉田,由于膜内耕作层土温高、底墒好,杂草出苗早而集中,一般覆膜后5 - 7天杂草陆续出土,在墒情好的情况下,15天左右即形成出土高峰。

qq_38220914的博客 1245

了解Webpack:现代前端开发的静态模块打包器

Webpack是一个功能强大的前端构建工具,它通过模块打包、依赖管理、文件转换、代码拆分和插件系统等功能,简化了前端项目的构建流程,提高了开发效率。通过本文的介绍和实践案例,相信读者已经对Webpack有了更深入的了解,并能够在实际项目中灵活应用Webpack进行前端构建。

huaqianzkh的专栏 1472

k最近邻算法——电影分类及案例详解

如图3-7所示,若将国际象棋棋盘放在二维直角坐标系中,格子的边长定义为1,坐标的x轴及y轴和棋盘方格平行,原点恰落在某一格的中心点,则王从一个位置走到其他位置需要的步数恰为二个位置的切比雪夫距离,因此切比雪夫距离也称为棋盘距离。关于这里的距离度量,这个电影分类的例子有2个特征,也就是2维的,可以使用我们高中学过的两点距离公式(两点距离公式其实就是欧氏距离在二维空间上的公式,也就是欧氏距离n的值为2的情况,欧氏距离也称为欧几里德距离)来计算距离,如图3-3所示。对数据进行归一化,避免量纲对计算距离的影响。

ZhShy 4553

simple_webpack:简化前端构建流程的模块打包器

simple_webpack:简化前端构建流程的模块打包器 在现代前端开发中,模块化编程已经成为主流。而将模块化的代码整合成一个或多个可执行的文件,就离不开模块打包工具。今天,我们推荐的这款开源项目 simple_webpack,正是这样一个简化前端构建流程的模块打包器。 项目介绍 simple_webpack 是一个轻量级的模块打包器,它能够分析项目中的模块依赖关系,将 ES6 模块代码转换成浏...

gitblog_00354的博客 1105

stm32最小系统_完成一个最小FOC矢量控制系统所需的基本模块和功能配置

当我们读懂 FOC 矢量控制的基本原理之后,便迫不及待的想动手尝试,去实现一个矢量控制系统,让电机先转起来,有一个直观的感受。因此,我们需要设计实现一个矢量控制的最小系统,具备矢量控制的基本功能,满足电机矢量运行的基本条件。首先,看一下矢量控制的基本架构:矢量控制架构如上图所描述,矢量控制系统包括实时电流的采集、clarke 变换、park 变换、SVPWM 、实时角度的反馈和计算以及电流环和速...

weixin_39524048的博客 1782

WebVTT中的文本轨道(Text Tracks,TT)到底是什么鬼?

WebVTT,全称是The Web Video Text Tracks Format,意思是网络视频文本轨道格式。那么到底什么是文本轨道(Text Tracks)呢?这篇文章希望一探究竟。

码农1479的博客 1985

Webpack:现代前端开发的模块打包利器

在传统的前端开发中,我们经常面临这样的困境:数十个甚至上百个JavaScript文件需要通过``标签手动引入,依赖管理混乱,加载顺序难以控制,代码冗余严重。随着现代前端应用的复杂度不断提升,这种开发方式已经无法满足需求。 Webpack(Web打包器)应运而生,它彻底改变了前端开发的构建方式。作为一个强大的模块打包工具,Webpack能够将各种资源(JavaScript、CSS、...

gitblog_00032的博客 404

[23]-->变长SPI接口

然而,FPGA技术复杂,学习门槛较高,许多人(初学者或学生)在学习过程中面临诸多挑战。(1)模式0:SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 0,CPHA=0;(2)模式1:SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换,CPOL= 0,CPHA=1;(3)模式3:SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 1,CPHA=1;

m0_46498597的博客 178

webpack:前端模块打包的基石

webpack是主流前端构建工具,负责将分散的前端模块打包成浏览器可运行的格式。核心功能包括代码分割、Loader机制处理非JS文件、插件系统扩展构建能力。虽然配置复杂学习曲线陡,但其成熟的生态(如mini-css-extract-plugin等插件)在中大型项目中仍具优势。近年来Vite因开发速度更快获得关注,但webpack在生产环境的成熟度和灵活性仍是复杂项目的首选。建议新手从官方文档入门,理解其模块化思想对前端工程化至关重要。

dataden397的博客 204

linux安装配置Mysql详细步骤

下载Mysql rpm包 官网下载:https://dev.mysql.com/downloads/mysql/ 如果你到了这里,本地应该有了如下四个rpm包: mysql-community-client-5.7.26-1.el6.x86_64.rpm mysql-community-common-5.7.26-1.el6.x86_64.rpm mysql-community-libs-5...

🏆 前端领域优质创作者 7万+

Vue Vben Admin 登录页修改全攻略:从登录界面定制到接口对接全流程配置

方式一:修改国际化文件找到对应的语言包文件,修改和的值。方式二:直接传递文本page-description="现代化的后台管理系统模板"page-title="欢迎使用 Vue Vben Admin"从上面的代码可以看出,登录表单使用了的方式来定义表单字段,这种方式提供了极大的灵活性。如果你想要自定义表单,可以修改formSchema数组。如果你的登录需求非常特殊,现有的组件无法满足,你可以完全自定义表单。只需在login.vue中替换<template><h2>自定义登录</h2>

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 478

前端工程模块打包工具 Webpack VS Rollup

Webpack和Rollup是主流前端打包工具,分别适用于不同场景:Webpack功能全面,支持多种资源打包,适合复杂应用开发;Rollup专注JS模块,代码更精简,适合类库开发。Vite等新工具结合了两者优势,开发时用ESM,生产环境用Rollup。ES模块(ESM)是JS原生模块系统,支持静态分析、独立作用域和异步加载,是现代前端开发的基础。工具选择应基于项目需求、规模和团队熟悉度。

华为开发者布道师,天府英才计划,致力于大数据+AI 的应用创新,助力企业与个人AI创新赋能。 542

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

前端模块打包工具Webpack

前端模块打包工具 打包工具解决的是前端整体的模块化,并不是单指JavaScript模块化 核心特性: 模块打包器(Module bundler) 模块加载器(Loader) 代码拆分(Code Splitting) 资源模块(Asset Module) 在webpack4.0以后支持0配置的方式直接启动打包 默认会将src/index.js 打包到 dist/main.js webpack.config.js是运行在node环境中的js文件 下面是一个简单的webpack.config.js文件 c

weixin_44811288的博客 798

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

前端学习之前端工程化(一):ES6模块化和webpack打包

文章目录一、前端工程化:1. 模块化相关规范:1.1 模块化概要:1.2 浏览器模块化规范:1.3 服务端的模块化规范:1.4 大一统的ES6规范:2. Node.js中通过babel体验ES6模块化:2.1 安装与配置babel:3. 设置默认导入/导出:3.1 默认导出:3.2 默认导入:4.设置按需导入/导出:4.1 按需导出:4.2 按需导入:5. 直接导入并执行代码:二、webpack:1. 当前web开发面临的困境:2. webpack:3. webpack基本使用:3.1 基本流程:3.2 使

浅弋、璃鱼的博客 1510

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

深入了解Webpack:前端模块打包工具

本文将深入探讨Webpack的基本概念、安装配置、模块打包、样式文件处理、插件系统、开发环境配置等方面,帮助读者全面了解Webpack的应用和优势。通过npm安装Webpack和Webpack CLI,创建Webpack配置文件webpack.config.js,并配置入口、输出、loader、插件等选项,可以实现基本的Webpack配置。通过配置devServer、Source Map等选项,可以实现开发环境的热更新和调试,同时通过压缩、代码分割等优化手段,可以实现生产环境的性能优化和打包优化。

weixin_47238919的博客 400

前端工程化探索学习之模块打包工具webpack(1)

一、这是第一次阅读webpack整理的简单结构脑图 1. 参考网址:https://webpack.docschina.org/concepts/modules/ 2.浏览完webpack的大致概念后:大致的思考: (1)webpack的作用是什么? (2)webpack的书写格式和大致结构是什么? (3)webpack的核心功能是由什么怎样的数据结构实现的? (4)webpack的加载和运行分为几个过程,分别执行了哪些操作? (5)webpack的简单书写方式,和不同书写方式间,在较为复

qq_36412077的博客 368
上一篇: 数据库常见错误码
下一篇: Docker中的Redis、RabbitMQ及Nacos的密码修改
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值