这里拓展一下前端的框架--webpack
这里对这个技术栈分两层来写
1.什么是webpack
2.如何对webpack有个更全面的理解和认识,开发者,要整我webpack的那些部分
先说一下,什么是webpack,以及为什么要了解
webpack。
webpack是一个前段构建工具。
比方说,我们有一个前端的脚手架
vue-cli
vue-element-admin
我们知道,这个前端的文件,最终是要给到用户电脑,手机上的浏览器用的。
这时候,就涉及到两个需求
1.怎么压缩这些文件
2,怎么把这些文件送给用户的浏览器上。
webpack就是解决第一个问题的。
第二个问题是nginx解决的。
好的,现在知道,为什么需要webpack了。
那让我们真正落地了解webpack
刚才说的内容,实际上是webpack的功能。
那webpack的实体是什么呢,是可以通过npm依赖引入的一个包。并且在前端的脚手架工程里配置使用。
我们实际上学的知识,就是。
这个webpack可以压缩什么内容。
具体要实现,什么样的逻辑功能,在项目中如何配置这样的问题。
1.修改压缩工程的进出口
2.webpack可以打包的东西
webpack打包html
webpack打包css,lss
webpack打包js
webpack打包图片
webpack对环境配置
webpack线上优化
使用cdn优化加载速度
分割公共代码
你梳理的这个结构很好,既有业务场景(为什么要用),也有落地的知识点(配置什么、打包什么)。
我来帮你把这两层内容进一步扩展、完善,形成一份更完整、更可落地的"前端框架---webpack"笔记。
1. 什么是 Webpack
一句话定义:
Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。
更通俗的解释:
- 你写的前端项目会有很多文件:
.js、.css、.less、.png、.vue等。 - 浏览器不认识这些复杂结构,也不适合一个个去加载(速度慢、请求多)。
- Webpack 把这些文件当作模块 ,通过一个入口 开始,分析依赖,最终打包成少数几个浏览器能高效加载的文件(如
bundle.js、app.css)。
为什么需要了解 Webpack(结合你提到的场景)
你提到:
前端文件要给用户浏览器用,有两个需求:
- 怎么压缩这些文件 → Webpack
- 怎么送到用户浏览器 → Nginx
✅ 非常准确。
实际上,Webpack 解决的是工程化阶段的问题:
- 压缩、转译、合并、优化
- 支持新语法(ES6+ → ES5)
- 支持非 JS 资源(图片、字体、样式)
而 Nginx 是部署阶段的问题:静态资源服务器、反向代理、负载均衡等。
小结:
Webpack = 打包工具(开发 + 构建阶段)
Nginx = 静态资源服务器(运行阶段)
2. 如何对 Webpack 有一个更全面的理解和认识(开发者落地视角)
你分得非常清楚:
Webpack 的实体是 npm 包,在前端脚手架工程里配置使用。
没错。我们学习 Webpack,其实是在学配置它的规则,让它理解我们的项目结构,并按我们期望的方式输出。
2.1 核心配置概念(必须掌握的 4 个)
| 概念 | 作用 |
|---|---|
| entry | 打包入口,Webpack 从这里开始找依赖 |
| output | 打包出口,控制生成文件的名字和路径 |
| loader | 处理非 JS 文件(如 CSS、图片、Vue 文件) |
| plugin | 做 loader 做不了的事(如 HTML 模板、压缩、变量注入) |
2.2 你提到的「Webpack 可以打包什么」------ 通过 loader 实现
| 文件类型 | 常用 loader |
|---|---|
| HTML(作为模板) | html-webpack-plugin(插件) |
| CSS / LESS | css-loader, style-loader, less-loader |
| JS(ES6+ 转 ES5) | babel-loader |
| 图片 / 字体 | file-loader, url-loader |
2.3 你提到的「修改压缩工程的进出口」
示例:
js
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.[contenthash].js'
}
}
2.4 Webpack 环境配置(开发 vs 生产)
| 环境 | 特点 |
|---|---|
| development | 不压缩、有 source-map、热更新、调试方便 |
| production | 压缩代码、Tree Shaking、优化输出 |
你可以在 webpack.config.js 中根据 NODE_ENV 动态切换。
3. 线上优化(你提到的两个重点展开)
3.1 使用 CDN 优化加载速度
思路:
把第三方库(如 vue, react, lodash)通过 CDN 引入,不打包进 vendor.js。
Webpack 配置方式:
js
externals: {
vue: 'Vue',
lodash: '_'
}
然后在 HTML 中手动添加 <script src="https://cdn.../vue.js">。
3.2 分割公共代码
使用 SplitChunksPlugin(Webpack 4+ 内置):
js
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all'
}
}
}
}
效果:
- 公共依赖提取成独立文件
- 浏览器可以缓存,减少重复加载
4. 总结(一张图理解 Webpack 在你的技术栈中扮演的角色)
源代码(src/)
├── index.js
├── style.css
├── logo.png
└── ...
⬇️ Webpack(入口 + loader + plugin)
打包产出(dist/)
├── bundle.js(压缩、转译)
├── main.css(提取、压缩)
└── logo.hash.png(图片指纹)
⬇️ Nginx 托管
用户浏览器访问
你作为开发者要掌握的 Webpack 部分:
- 能看懂并修改
webpack.config.js - 知道怎么加 loader 处理新文件类型
- 知道怎么分环境配置(dev/prod)
- 能做基础优化:CDN、拆包、压缩
- 理解前端脚手架(如 vue-cli)底层也是 Webpack