webpack用法及构建流程

webpack 基础知识点 1、基本定义wbpack是一个打包模块化javascript的工具,在webpack里一切文件皆模块,通过loader转换文件,通过plugin注入钩子,最后输出由多个模块组合成的文件,webpack专注构建模块化项目,webpack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。 阅读详情

webpack用法​

entry

webpack构建的入口,webpack根据入口文件找到依赖模块以及依赖的模块所依赖的模块。

// 单文件写法
entry: {
    index: '/app/index.js',
    about: '/app/about.js',
}

// 多文件写法,将多个文件打包到同一个bundle中
entry: {
    index: ['webpack-hot-middleware/client', '/app/index.js'],
    vendors: ['react', 'react-dom', 'redux', 'react-router'],
}

output

webpack的输出,指示webapck如何输出、以及输出到哪里、输出的格式等。

path:输出文件的目录。 filename:输出的文件名,一般跟entry配置相对应。
chunkFilename:块,非入口entry模块,会自动拆分文件,也就是常说的按需加载,与路由中的require.ensure相对应
publicPath:文件输出的公共路径

output: {
    path: path.resolve(__dirname, '/assets'),
    // entry中的文件对应的文件名
    filename: 'js/[name].js',
    // 动态加载的文件对应的文件名
    chunkFilename: 'js/[name].[chunkhash:8].js',
    publicPath: '/static/',
}
// 按需加载
// webpack会以'./chunk'为新的入口生成一个chunk
// 代码只有执行到import语句时,才会动态加载chunk对应的文件
// import返回一个promise对象,可以调用then方法接受返回值
import(/* webpackChunkName: 'chunkName' */ './chunk').then();

loader

​webpack只能解析js文件,loader赋予webpack将其他文件转化为webpack能解析的模块的能力。

test:正则表达式,匹配编译的文件
exclude:排除的文件
include:包含的文件
use > loader:相当于test匹配到的文件的解析器
use > options:配合loader使用,可以是字符串或者对象

modules: {
    rules: [
        {
            test: /\.jsx?$/,
            use: ['babel-loader'],
        },
        {
            test: /\.s?css$/,
            use: [
                'style-loader', 
                'css-loader',
                {
                    loader: 'postcss-loader',
                    options: {
                        plugins: () => [require('autoprefixer')],
                    },
                }, 
                'postcss-loader', 
                'sass-loader'
            ],
        }
    ],
}

plugin

webpack的插件,webpack在构建过程中,会在特定的生命周期广播特定的事件,plugin会监听webpack广播的事件,在收到感兴趣的事件后进行特定操作。

常用的webpack插件:
clean-webpack-plugin 删除打包目录中的文件
html-webpack-plugin 自动生成HTML模板,并将打包后的js文件插入HTML中。
mini-css-extract-plugin 提取css代码

webpack构建流程

1、初始化参数

从配置文件(webpack.config.js)和shell脚本读取合并参数,得到最终的参数。

2、开始编译

用上一步得到的参数初始化Compiler对象,加载所有配置的插件,通过执行对象的run方法开始执行编译。

3、确定入口

根据配置中的entry找出所有的入口文件。

4、编译模块

从入口文件出发,调用所有配置的loader对模块进行翻译,再找出该模块依赖的模块,递归本步骤直到所有入口文件所依赖的文件都经过处理。

5、完成模块编译

经过上一步骤之后,得到每个模块被翻译之后的最终内容和他们之间的依赖关系。

6、输出资源

根据入口和模块之间的依赖关系,组装成一个个包含多个模块的chunk,再将每个chunk转换成一个单独的文件加入输出列表中,这一步是可以修改输出内容的最后机会。

7、输出完成

在确定好输出内容之后,根据配置(webpack.config.js和shell)确定输出的路径和文件名,将文件内容写入到文件系统。

Webpack+React+ES6+JSX+CSS实战项目构建指南 Webpack是一种广泛使用的前端构建工具,它可以将各种静态资源如JavaScript、CSS、图片等打包成浏览器可识别的格式。它的核心功能是模块打包,这意味着可以将应用程序划分成多个模块,Webpack负责按需加载这些模块。Webpack的工作原理是通过配置文件来描述模块之间的依赖关系,并生成依赖图。然后,根据这个图,Webpack会打包所有的依赖项,并输出到一个或多个bundle文件中。 阅读详情

相关推荐

从零开始掌握RDMA拥塞控制:原理、算法与实战解析

本文深入解析了RDMA拥塞控制的核心原理与实战配置。RDMA依赖无损网络保障高性能,其关键在于PFC与ECN两大技术协同防止丢包。文章重点剖析了主流算法DCQCN的工作机制与参数调优,并简要介绍了HPCC与TIMELY等前沿算法。最后提供了在Linux上配置RoCEv2与DCQCN的详细步骤及性能调试方法,帮助读者从零构建稳定的RDMA网络环境。

weixin_28452161的博客 137

Webpack 的构建流程

首先先简单了解下 Webpack 构建过程:根据配置,识别入口文件;逐层识别模块依赖(包括、AMD、或 ES6 的 import 等,都会被识别和分析);Webpack 主要工作内容就是分析代码,转换代码,编译代码,最后输出代码;输出最后打包后的代码。

weixin_45573779的博客 3391

自锁电路设计

Hi,uu们,是不是经常要用到自锁电路,通常不是使用555芯片就是用比较器来做自锁,今天我们来简单看下自锁电路的设计.图1采用了比较器构建了一个自锁电路,采用低电平复位,当需要复位的时候志需要将反向端的二极管拉低一下即可,免去 三极管控制同相端和电源短接的麻烦。图1:比较器构建的自锁电路也可以使用555去构建,如下图2所示.图2:使用555构建的自锁电路工作原理见555的真值表,真值表如表1所示.表1:555电路真值表相对来说555还是比较贵,所以我就想能不能有个便宜的方法做个自锁电路,构建电路如下图3所示

weixin_43884675的博客 7069

webpack 解析ts、tsx语法

1、解析ts语法(配置loader或使用Babel) 方式一:配置loader module:{ rules:[ 方式一:ts-loader { test:/\.tsx?$/, use:[ { loader:'ts-loader', options:{ transpileOnly: true, 只进行语法转换,不进行类型校验,提高构建速度 } } ]

weixin_43294560的博客 7279

【动态导通电阻】p-GaN HEMTs正向和反向导通下的动态导通电阻

2024年,浙江大学的研究团队通过多组双脉冲测试方法,深入研究了两种商用p-GaN栅极HEMTs在正向和反向导通模式下的动态导通电阻(RON)特性。研究发现,肖特基型p-GaN栅极HEMTs在反向导通时动态RON比正向导通高3%-5%,而混合漏极嵌入栅注入晶体管在反向导通时动态RON降级较轻,降低约10%。此外,随着漏极电流(IDS)的增加,两种器件在反向导通时动态RON先减小后增加,形成“谷底”现象。

荷塘阅色 827

YOLOv5源码逐行超详细注释与解读(1)——项目目录结构解析

全网最全YOLOv5项目目录结构超详细分析。逐个文件注释,小白上手必备

路人贾的博客 9万+

Webpack构建流程

webpack构建流程

大兵的猫 2899

[AI] 嵌入模型选择:bge / text-embedding-3 / Jina Embeddings 对比与选型指南

摘要: 本文对比了BGE-M3、OpenAI和Jina三种主流嵌入模型在语言覆盖、性能、延迟、维度和成本等维度的差异。BGE-M3适合中文场景,本地部署成本低;OpenAI API多语能力强但依赖网络;Jina在多语表现突出但需关注商用许可。测试显示BGE-M3本地延迟3-6ms,OpenAI API延迟200-600ms。选型建议:隐私场景选BGE本地部署,多语低维护选OpenAI,高精度选Jina。部署时需注意批处理优化、向量库压缩和商用许可等问题,建议建立评测指标并监控关键指标。

每日出拳老爷子的博客 428

webpack工作流程

entryLoader在以上过程中,Webpack 会在特定的时间点广播出特定的事件,插件在监听到感兴趣的事件后会执行特定的逻辑,并且插件可以调用 Webpack 提供的 API 改变 Webpack 的运行结果。

在所有的事情背后,要有一颗坚定的的本心,要有一颗应对变革和提升自我的本心,世界瞬息万变,本心要坚持到底,保持学习,时刻复盘 1955

ResNet改进(45):结合通道混洗(ShuffleNet)的混合架构

本文提出了一种创新的卷积神经网络(CNN)架构CustomResNet,它将ResNet34与通道混洗(ChannelShuffle)技术相结合。该模型通过ShuffleBlock模块替换原始ResNet层,包含三个核心组件:1) ChannelShuffle模块实现通道分组混洗;2) ShuffleBlock模块整合点卷积、分组卷积和残差连接;3) CustomResNet主模型保持ResNet整体架构但替换核心层为ShuffleBlock。这种设计既保留了ResNet的残差学习能力,又通过通道混洗增强特

2401_82355416的博客 211

论文阅读:ICLR 2026 Breaking and Fixing Defenses Against Control-Flow Hijacking in Multi-Agent Systems

该论文首先系统阐述了控制流劫持攻击的核心机理。此类攻击通过操纵多智能体系统的编排机制,诱导系统执行非安全操作,进而实现敏感信息窃取。攻击者将恶意指令伪装成环境错误信息,借助可信代理传递至系统编排器,利用"困惑副手"漏洞绕过传统安全防线。该论文指出,现有防御方案如LlamaFirewall所依赖的对齐检查机制存在根本性局限——安全目标与功能需求之间存在不可调和的内在冲突。该论文的核心贡献体现在攻防两个维度。

CSPhD-winston的博客 494

Webpack构建流程详解

初始化:读取配置文件,创建 Compiler 对象,注册所有的插件。开始编译:从入口文件开始分析依赖,创建 Compilation 对象。确定入口:找到入口文件,作为依赖图的起点。构建模块:递归解析每个模块的依赖,使用 Loader 转换文件。模块打包:将所有模块打包为一个或多个代码块(chunks),进行优化。输出文件:将打包好的文件写入到指定的输出目录。完成打包:触发done钩子,打包流程结束。

xiaowu5705的博客 2107

SoC 内的 CPU、GPU、DSP、NPU 协同执行结构图解析:多异构协同的最新实战体系

随着移动端 AI 能力迅速演进,SoC(System on Chip)内部的多种异构计算单元(CPU、GPU、DSP、NPU)之间的协同执行能力成为衡量芯片智能算力的关键指标。本文基于截至 2025 年 5 月最新主流国产芯片(如海思昇腾、地平线旭日、联发科天玑、高通骁龙 8 Gen 系、寒武纪思元等)在实际落地应用中的公开结构与技术资料,深入解析 CPU-GPU-DSP-NPU 协同执行的体系结构、执行路径与调度逻辑。文章结合 Android NNAPI、Vulkan Compute、自定义调度器等工程实

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 8710

Webpack常见面试题

Webpack常见面试题1.前端为何进行打包构建2.loader和plugin区别3.常见的loader和plugin4.babel和webpack的区别5.babel-polyfill和babel-runtime的区别6.webpack如何实现懒加载7.为何proxy不能被polyfill8.webpack构建流程 1.前端为何进行打包构建 (一)代码层面 (二)研发流程 2.loader和plugin区别 不同的作用 Loader直译为"加载器"。Webpack将一切文件视为模块,但是webpack

qq_25503949的博客 1455

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

webpack (常问高薪面试题11道)(20220401)

1、什么是 webpack(必会) 1、基本定义 wbpack 是一个打包模块化 javascript 的工具,在 webpack 里一切文件皆模块,通过 loader 转换文件,通过 plugin 注入钩子,最后输出由多个模块组合成的文件,webpack 专注构 建模块化项目,webpack 可以看做是模块打包机:它做的事情是,分析你的项目结构,找到 JavaScript 模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript 等),并将 其打包为合适的格式

weixin_59519449的博客 7679

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【webpack】插件 plugins

插件(plugins) 插件是 webpack 的支柱功能。插件目的在于解决 loader 无法实现的其他事。 webpack 插件是一个具有 apply 属性的 JavaScript 对象。apply 属性会被 webpack compiler 调用,并且 compiler 对象可在整个编译生命周期访问。如ConsoleLogOnBuildWebpackPlugin.js: class Co...

lanwuying的专栏 6189

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

webpack学习用法总结

Github源码地址 webpack介绍 webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。 学习文档 : webpack官网: http:/...

莫小耿 395

webpack总结

本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。从 v4.0.0 开始,webpack 可以不用再引入一个配置文件来打包项目,然而,它仍然有着 高度可配置性,可以很好满足你的需求。在开始前你需要先理解一些核心概念:本文档旨在给出这些概念的高度概述,同

linlinaitangtang的博客 288

如何构建与参与react-timer-hook开发?Webpack+Babel构建流程、Demo源码与贡献流程完全解析

**react-timer-hook** 是一个轻量级的 React 自定义 Hook 库,专门用于在 React 组件中处理**倒计时(Timer)、秒表(Stopwatch)和当前时间(Time)**逻辑与状态。本文带你完整解析它的 Webpack + Babel 构建流程、Demo 源码结构与贡献(Contribution)流程,帮助新手快速上手本地构建,并顺利向项目提交第一个 PR 🚀。

gitblog_00859的博客 431

Webpack 入门;构建项目,脚手架

  1. 选择一个文件夹: D:/usr/webpack/demo01,并且在该目录下创建一个package.json 空白文件 demo |- package.json 2. 打开vscode: 3. 进入终端执行:  npm init 4. 在当前文件夹下创建文件目录: demo |- package.json |- /dist |- index.html |- /sr...

JavaCode 1786

【Webpack笔记】Webpack的配置文件:webpack.config.js

Webpack的配置文件:webpack.config.js 作用: 指示 webpack 干哪些活(当你运行 webpack 指令时,会加载里面的配置) 所有构建工具都是基于nodejs平台运行的~模块化默认采用commonjs。 resolve用来拼接绝对路径的方法 const { resolve } = require('path'); module.exports = { // ...

你若盛开,清风自来 334

从配置到优化:全面掌握Webpack工程化

Webpack核心配置解析 构建流程与性能优化进阶特性剖析

weixin_34285318的博客 891

「吐血整理」再来一打Webpack面试题

再来一打Webpack面试题。

童欧巴的博客 546

深入学习webpack 4.x核心用法及其源码(二)

上一小节我简单介绍了 webpack 的一些用法,它的核心用法我还没有介绍,webpack 默认只会对 js 的一些代码进行打包,不可以对 css 样式进行打包,或把二进制图片打包成 data URL,热更新 Loader 介绍 loader 用于对模块的源代码进行转换。例如:typescript 转换成 js,less 转换为 css 等。 使用 webpack 4.x 有三种使用 loader...

qq_43389371的博客 247

webpack打包

(1) 首先生成一个package.json文件 进入项目文件的根目录执行npm init 在根目录中生成一个package.json文件 (2)全局安装webpack 执行npm install -g webpack 根目录的文件夹下会生成node_modules文件夹中会包含webpack, (3)配置webpack 每个文件目录下都会有一个webpack.co...

anxuandao0076的博客 155

webpack初入

序言:前面已经倒腾了grunt、gulp、fis3,今天来通过一个例子玩玩webpack!最终预览 通过下面的例子,能够了解以下几点: 1、如何安装webpack 2、如何使用webpack 3、如何...

whiteGay的博客 128
上一篇: 支付宝小程序唤起签约并支付(周期扣款)
下一篇: JS排序算法
也无风雨丶
博客等级 码龄10年 52粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值