当前位置: 首页 > news >正文

webpack学习笔记

Webpack 是一款现代前端工程化核心工具

模块打包器:原生支持ES Modules/CommonJS等模块规范,构建依赖图谱(dependency graph)实现智能打包

资源处理器:通过Loader系统处理: JavaScript(Babel转译) 、CSS(Sass/Less编译)  图片/字体(优化/Base64转换) 、 现代框架(Vue/React单文件组件)

优化引擎:Tree Shaking(ES6模块静态分析)、Code Splitting(动态加载优化)、Scope Hoisting(作用域提升)、压缩混淆(TerserPlugin)

学习曲线建议:

  1. 基础配置(entry/output/loader)
  2. 开发环境配置(devServer/HMR)
  3. 生产优化(代码分割/缓存策略)
  4. 自定义插件开发
  5. 性能调优(构建速度/输出优化)
文件类型常用Loader组合典型配置
JavaScriptbabel-loader + @babel/coreES6+转译/JSX处理
TypeScriptts-loader + fork-ts-checker-webpack-plugin类型检查加速
CSSstyle-loader + css-loader + postcss-loader自动前缀/CSS模块
SCSSsass-loader + css-loader + style-loaderSass编译
图片资源url-loader + image-webpack-loader自动Base64/压缩优化

构建分析工具

# 生成分析报告
npx webpack --profile --json > stats.json

# 可视化分析工具
npm install --save-dev webpack-bundle-analyzer

基础配置

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {// 开发模式配置mode: 'development',// 入口配置entry: {main: './src/index.js',vendor: ['react', 'react-dom']},// 输出配置output: {filename: '[name].[contenthash].js',path: path.resolve(__dirname, 'dist'),clean: true},// 模块处理规则module: {rules: [{test: /\.jsx?$/,exclude: /node_modules/,use: {loader: 'babel-loader',options: {presets: ['@babel/preset-env', '@babel/preset-react']}}},{test: /\.css$/,use: ['style-loader', 'css-loader', 'postcss-loader']},{test: /\.(png|svg|jpg|jpeg|gif)$/i,type: 'asset/resource'}]},// 插件系统plugins: [new HtmlWebpackPlugin({template: './public/index.html',favicon: './public/favicon.ico'})],// 开发服务器devServer: {static: './dist',hot: true,historyApiFallback: true,port: 3000},// 优化配置optimization: {splitChunks: {chunks: 'all',cacheGroups: {vendor: {test: /[\\/]node_modules[\\/]/,name: 'vendors',chunks: 'all'}}}}
};

环境区分

// webpack.config.js
module.exports = (env) => {const isProduction = env.mode === 'production';return {mode: env.mode || 'development',devtool: isProduction ? 'source-map' : 'eval-cheap-module-source-map',plugins: [new webpack.DefinePlugin({'process.env.NODE_ENV': JSON.stringify(env.mode)})]}
}

相关文章:

  • 深入解析 Linux 进程管理
  • 前端[插件化]设计思想_Vue、React、Webpack、Vite、Element Plus、Ant Design
  • FPGA各种通信接口标准详解
  • 如何升级 npm:从版本管理到最佳实践
  • 【mysql】mysql的高级函数、高级用法
  • Spring生态的核心思想
  • Robust Kernel Estimation with Outliers Handling for Image Deblurring论文阅读
  • 算法修仙传 第一章 灵根觉醒:数组基础与遍历
  • 第十节第七部分:Arrays类、自定义排序规则Comparable、自定义比较器Comparator
  • 计算机组成原理-基本运算部件定点数的运算
  • JavaScript的三大核心组成:ECMAScript、DOM与BOM
  • pytdx数据获取:在线获取和离线获取(8年前的东西,还能用吗?)
  • 分布式事务Seata-核心问题
  • 【C语言练习】058. 编写函数连接两个字符串
  • 计算机网络——每一层的用到的设备及其作用
  • 打破双亲委派模型的实践:JDBC与Tomcat的深度解析
  • 高效记单词:以load为例,让我们逐水而生
  • 数据采集器实现电源动态能耗追踪的组网配置方案
  • Java中的Switch Case多个条件
  • Vue-js
  • css3网站模板/产品线上推广方案
  • 独立站怎么推广/新十条优化措施
  • 广州模板建站平台/石家庄疫情最新消息
  • 优化优化/苏州百度 seo
  • 巨量广告投放平台/奉化网站关键词优化费用
  • 网站做不了301重定向/北京seo教师