(1)Entry:定义webpack打包的入口文件,可以是单个文件或多个文件。
(2)Output:定义打包后文件的输出位置和文件名。
(3)Loader:用于实现对不同类型的文件的加载和转换,例如将ES6的代码转换为ES5的代码。 (4)Plugin:用于扩展webpack的功能,例如压缩代码、拷贝文件等。
(5)Mode:指定webpack的构建模式,可以是development、production或none。
(6)Resolve:指定模块的解析规则,例如配置模块查找的路径、指定模块的别名等。
(7)DevServer:用于开发环境的配置,提供了一个简单的web服务器,并支持热模块替换
devtool
module:{ //配置loader
rules:[
test:'',
exclude:,
use:{
loader
}
]}
Plugin: clean-webpack-plugin、html-webpack-plugin、mini-css-extract-plugin、 optimize-css-assets-webpack-plugin (压缩css)、PurifyCSS(清除无用 css)、webpack-dev-server、workbox-webpack-plugin(PWA:服务挂了,缓存依旧可以访问)、add-asset-html-webpack-plugin(打包的文件注入到index.html)、webpack.DllReferencePlugin(DLLPlugin加速打包速度)
为浏览器加前缀:安装 postcss-loader 和 autoprefixer 依赖
处理图片:url-loader(字体、图片)、img-loader、image-webpack-loader(压缩图片)
生成雪碧图:postcss-loader postcss-sprites
Babel:babel-loader: 负责 ES6 语法转化。.babelrc
@babel/core、@babel/preset-env 和 @babel/plugin-transform-runtime、@babel/polyfill(转化新的j sAPI,例如Object.assign、Proxy、Reflect、Symbol、Promise)
.browserslistrc 兼容浏览器页面
处理第三方js。webpack.ProvidePlugin以及resolve下的alias
热更新模块:webpack.HotModuleReplacementPlugin()、webpack.NamedModulesPlugin(),顺序不能错、并且指定 devServer.hot 为 true
devServer 模块的底层是使用了 http-proxy-middleware
多页面配置entry引入多个
引入 webpack-merge 插件来合并配置、env区分环境
.eslintrc: 规范校验'eslint-loader'
Code Splitting
----lodash . 代码分割:4之前commonsChunkPlugin,4之后splitChunksPlugins
optimization: {splitChunks: {chunks: 'all'},cacheGroup:{commons}}, webpack 默认是 chunks: 'async'
分割异步代码
异步方式导入再写代码
return import('lodash').then(({ default: _ }) =>{
import(/* webpackChunkName: 'a'*/'./a').then(function(a){
Lazy loading、Prefetching 、Preloading
懒加载-点击页面时候异步加载输出, Preload 会和核心的代码并行加载
import(/* webpackChunkName: 'use-lodash'*/'lodash').then(function(_){
webpackPrefetch: true
等主要的 JS 都加载完了之后,网络带宽空闲的时候,它就会预先帮你加载好
import(/* webpackPrefetch: true */'./click.js').then(({ default: func })
webpackPreload: true
会和核心的代码并行加载,还是不推荐
import(/* webpackPreload: true */'./click.js').then(({ default: func })
PWA:
vite:
(1)编译器模块(Compiler Module):负责将源代码编译成可执行的代码。
(2)优化器模块(Optimizer Module):负责对编译后的代码进行优化,以提高性能和代码质量。(3)虚拟机模块(Virtual Machine Module):负责解释和执行编译后的代码。
(4)调试器模块(Debugger Module):负责提供调试功能,例如在代码运行过程中设置断点、查看变量值等。
(5)内存管理模块(Memory Management Module):负责对内存的分配和释放,以及对内存的管理和优化。
(6)文件系统模块(File System Module):负责对文件的读写操作,以及对文件的管理和优化。
(7)网络模块(Network Module):负责处理与网络相关的操作,例如发送和接收数据。
(8)用户界面模块(User Interface Module):负责提供用户界面,以便用户与程序进行交互。
(9)数据库模块(Database Module):负责对数据库进行操作,例如插入、更新、删除和查询数据等。
(10)安全模块(Security Module):负责提供安全功能,例如加密、解密和身份验证等。