当前位置: 首页 > 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)})]}
}
http://www.xdnf.cn/news/600553.html

相关文章:

  • 【HarmonyOS 5】Map Kit 地图服务之应用内地图加载
  • 遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之二训练模型
  • 爱普生晶振赋能UWB汽车数字钥匙,解锁未来出行新方式
  • 【Harmony OS】作业四 布局
  • 掌握 npm 核心操作:从安装到管理依赖的完整指南
  • SpringCloud——MybatisPlus
  • CMake创建C++项目与npm创建nodejs项目异曲同工
  • 基于 ARIMA 与贝叶斯回归的时间序列分析:结合趋势季节性与不确定性量化(附 PyTorch 变分贝叶斯实现)
  • AWS EC2实例安全远程访问最佳实践
  • uniapp原生插件
  • Profibus转Profinet网关赋能鼓式硫化机:智能化生产升级的关键突破
  • 多模态大语言模型arxiv论文略读(九十一)
  • vscode使用ssh链接服务器
  • 飞桨(PaddlePaddle)在机器学习全流程(数据采集、处理、标注、建模、分析、优化)
  • [论文阅读]Pandora: Jailbreak GPTs by Retrieval Augmented Generation Poisoning
  • [ Qt ] | 常见控件(一)
  • Oracle 基础知识作业的使用
  • NLP入门指南:零基础理解自然语言处理
  • 医学人工智能中的分层处理与跨模态融合:深度架构设计研究(基础教程.下)
  • Ensp --四路由练习
  • fpga-编程线性序列机和状态机
  • MySQL 派生表查询导致 Crash 的根源分析与解决方案
  • (万字长文)Django数据库操作——ORM:数据交互显示前端网页
  • JVM——Java 虚拟机的监控及诊断工具(GUI 篇)
  • vue2中,codemirror编辑器的使用
  • SpringMVC(结合源码浅析工作流程)
  • 【Mysql|数据恢复】rm -rf 误删数据库文件恢复
  • opencv彩图-直方图均衡化
  • 论文略读:If Multi-Agent Debate is the Answer, What is the Question?
  • 一条SQL语句的旅程:解析、优化与执行全过程研究