一 目录
不折腾的前端,和咸鱼有什么区别
目录 |
---|
一 目录 |
二 温习知识点 |
2.1 Babel |
2.2 Webpack |
2.3 Webpack – Tree Shaking |
2.4 Webpack – Scope Hoisting |
2.5 Webpack 简略实现 |
2.6 Webpack 性能优化 |
三 参考文献 |
3.1 杂 |
3.2 Babel |
3.3 模板引擎 |
3.4 前端监控 |
四 Webpack 参考文献 |
4.1 Webpack 系列文章 |
4.2 Webpack 性能优化 |
4.3 Scope Hoisting |
4.4 Tree Shaking |
4.5 懒加载 |
二 温习知识点
返回目录
本系列参考 79 篇文章,总结出 6 篇文章,感激小伙伴们的反对。
2.1 Babel
返回目录
文章地址:Babel
- [x] AST:形象语法树,是源代码语法结构的一种形象示意
- [x] 原理 :将现有的 ES6+ 代码,先通过 词法剖析 和 语法分析 之后 解析 为
AST
,而后将这份AST
转换 为咱们须要模式的AST
,最初将这个AST
再转换成 ES5 或者冀望格局的内容。
2.2 Webpack
返回目录
文章地址:Webpack
- [x] 是什么:实质是一个模块打包器,其工作是将每个模块打包成相应的
bundle
- [x] 外围概念:
mode
、entry
、output
、loader
、plugin
- [x] 构建流程:初始化、编译、输入,插件(
Plugin
)随时监听Webpack
播送并在某些时候调用API
扭转运行后果。 - [x] entry:指定打包⼊口⽂文件。本来是
string
,即一个入口对一个打包文件、object
多对一,array
多对多 - [x] output:打包后的文件地位
- [x] loader:翻译官,对不同资源进行解决,从右向左执行
- [x] plugin:插件,扩大
Webpack
的性能,监听Webpack
的生命周期,调用API
扭转输入后果。 - [x] resolve:配置
Webpack
如何寻找模块所对应的文件。resolve.modules/extensions/include/exclude
-
[x] 从 0 开始配置 Webpack
- [x] 技术选型:挪动端 |PC、MPA|SPA、HTML| 模板引擎、CSS| 预处理器、ES5|ES6+、Mock、React|Vue、多人单干 | 单人我的项目、ESlint|TSlint、单元测试、提交标准
- [x] Loader 解决 CSS、Less、Sass
- [x] Loader 解决图片
- [x] Loader 解决字体
- [x] Loader 配置多页面打包(MPA)
- [x] source map
- [x] webpack dev server
- [x] babel
- [x] react
- [x] 性能优化
- [x] 其余:解析器、写 Loader、写 Plugin
-
[x] 懒加载
- [x] 代码宰割:
code splitting
- [x] 实现原理:子模块独自打包、借助函数提早加载
- [x] Vue 按需加载
- [x] 代码宰割:
-
[x] 热更新
- [x] 开启形式:配置
devServer
,增加热更新插件HotModuleReplacementPlugin
- [x] 热更新原理
- [x] 开启形式:配置
-
[x] 3 种 hash:
- [x]
hash
:整个我的项目只有有文件更改,那就变更 - [x]
chunkhash
:某个入口对应的chunk
进行了变更,那就生成新的hash
值,不会影响其余chunk
- [x]
contenthash
:对应某个文件内容变更了,才会更换这个文件,生成新的hash
,而不会影响同一个模块下其余文件
- [x]
- [x] source map:将编译、打包、压缩后的代码映射回源代码的过程
2.3 Webpack – Tree Shaking
返回目录
文章地址:Webpack – Tree Shaking
- [x] Tree Shaking:通过在
package.json
中开启sideEffects
,将 ES6 模板语法的import
行为导入的文件都标记为无副作用,而后开启-p
的生产模式,让Webpack
调用外部的UglifyJSWebpackPlugin
来进行删除未援用代码。 - [x] dead-code:代码不会被执行,或者执行后果不会被用到,或者代码只会影响死变量的,叫做
dead-code
- [x] 副作用:如果在
import
导入时就会做一些非凡行为的代码,称之为有副作用的代码,例如polyfill
会影响全局作用域 - [x] 动态剖析:ES6 模板语法能够在不执行代码的状况下,从字面量上对代码进行剖析。动态剖析是
Tree Shaking
的根底。而require
是须要执行了才晓得援用内容的,就不能通过动态剖析做优化
2.4 Webpack – Scope Hoisting
返回目录
文章地址:Webpack – Scope Hoisting
- [x] Scope Hoisting:Webpack3 增加的性能,作用域晋升。原理是剖析模块的援用关系,将打散的模块合并到同一个函数中,须要 ES6 模板语法进行动态剖析
2.5 Webpack 简略实现
返回目录
文章地址:Webpack 简略实现
- [x] 利用
babel
实现代码转换,并生成单个文件的依赖 - [x] 生成依赖图谱
- [x] 生成最初打包代码
2.6 Webpack 性能优化
返回目录
文章地址:Webpack 性能优化
- [x] resolve.modules:用于配置
Webpack
去哪些目录下寻找第三方模块(node_modules
) - [x] resolve.extensions:在导入没带文件后缀的门路时,
Webpack
会主动带上后缀去尝试询问文件是否存在,而resolve.extensions
用于配置尝试后缀列表;默认为extensions:['js', 'json']
- [x] resolve.include/exclude:以
babel-loader
为例,能够通过include
和exclude
帮忙咱们防止node_modules
这类宏大文件夹] - [x] 缓存:
cache-loader
和uglifyjs-webpack-plugin
,将编译后果写进硬盘缓存,下次文件如果没有变动则间接拉取缓存 - [x] 多过程:
Happypack
和thread-loader
,将工作分解成多个子过程去并发执行,进步打包效率 - [x] 多过程压缩:
Webpack
自带的UglifyJSWebpackPlugin
压缩插件是单线程运行的,而TerserWebpackPlugin
能够并行执行(多线程) - [x] 动态资源拆散:
CommonsChunkPlugins
每次构建都会从新构建vendor
,出于效率问题应用DllPlugin
能够将第三方库独自打包到一个文件中,只有依赖本身产生版本变动才会从新打包 -
[x] 打包资源压缩:
- [x] JS 压缩:
UglifyJSWebpackPlugin
和TerserWebpackPlugin
- [x] HTML 压缩:
HtmlWebpackPlugin
- [x] CSS 压缩:
MiniCssExtractPlugin
- [x] 图片压缩:
ImageWebpackPlugin
- [x] Gzip 压缩:不包含图片
- [x] JS 压缩:
- [x] Tree Shaking
- [x] Scope Hoisiting
- [x] 按需加载
三 参考文献
返回目录
本系列参考文献有 79 篇.
3.1 杂
返回目录
2020:
- [x] 大公司里怎么开发和部署前端代码?【浏览倡议:10min】
- [x] 前端高级进阶:前端部署的倒退历程【浏览倡议:20min】
2019:
- [x] 前端同构渲染的思考与实际【浏览倡议:20min】
2018:
- [x] 前端工程师为什么要学习编译原理?【浏览倡议:30min】
- [x] 50 行代码的 MVVM,感触闭包的艺术【浏览倡议:10min】
- [x] 不好意思!耽搁你的十分钟,让 MVVM 原理还给你【浏览倡议:20min】
- [x] 2018 前端性能优化清单【浏览倡议:30min】
- [x] 网页图片加载优化计划【浏览倡议:20min】
- [x] 如何优雅解决前端异样【浏览倡议:30min】
3.2 Babel
返回目录
- [x] 一篇文章理解前端开发必须懂的 Babel【浏览倡议:10min】
- [x] 不容错过的 Babel7 常识【浏览倡议:30min】
- [x] 前端工程师须要理解的 Babel 常识【浏览倡议:30min】
- [x] 深入浅出 Babel 上篇:架构和原理 + 实战【浏览倡议:30min】
- [x] 深入浅出 Babel 下篇:既生 Plugin 何生 Macros【浏览倡议:30min】
- [x] 前端工程师的自我涵养 - 对于 Babel 那些事儿【浏览倡议:20min】
- [x] 前端与编译原理——用 JS 写一个 JS 解释器【浏览倡议:20min】
- [x] 面试官: 你理解过 Babel 吗?写过 Babel 插件吗? 答: 没有。卒【浏览倡议:10min】
- [x] 入门 babel– 实现一个 es6 的 class 转换器【浏览倡议:10min】
3.3 模板引擎
返回目录
- [x] 编写一个简略的 JavaScript 模板引擎【浏览倡议:5min】
- [x] JavaScript 模板引擎原理,几行代码的事儿浏览倡议:10min】
- [x] Vue 模板编译原理【浏览倡议:30min】
3.4 前端监控
返回目录
- [x] 5 分钟撸一个前端性能监控工具【浏览倡议:10min】
- [x] 把前端监控做到极致【浏览倡议:10min】
- [x] GMTC 大前端时代前端监控的最佳实际【浏览倡议:20min】
- [x] 前端监控和前端埋点方案设计【浏览倡议:20min】
- [x] 腾讯 CDC 团队:前端异样监控解决方案【浏览倡议:20min】
- [x] 把前端监控做到极致【浏览倡议:10min】
四 Webpack 参考文献
返回目录
Webpack 系列参考文献有 52 篇文章。
4.1 Webpack 系列文章
返回目录
其余:
- [x] Webpack 中文文档【浏览倡议:无】
- [x] Webpack 小书【浏览倡议:无】
2020 年文章:
- [x]「吐血整顿」再来一打 Webpack 面试题【浏览倡议:1h】
- [x] 带你深度解锁 Webpack 系列(根底篇)【浏览倡议:1h】
- [x] 带你深度解锁 Webpack 系列(进阶篇)【浏览倡议:30min】
- [x] 带你深度解锁 Webpack 系列(优化篇)【浏览倡议:20min】
- [x] webpack loader 从上手到了解系列:vue-loader【浏览倡议:20min】
- [x] webpack loader 从上手到了解系列:style-loader【浏览倡议:20min】
- [x] 霖呆呆的 webpack 之路 -loader 篇【浏览倡议:20min】
- [x] 揭秘 webpack plugin【浏览倡议:30min】
2019 年文章:
- [x] 对于 webpack4 的 14 个知识点, 童叟无欺【浏览倡议:30min】
- [x] 实现一个简略的 webpack【浏览倡议:1h】
- [x] 一文把握 Webpack 编译流程【浏览倡议:1h】
- [x] 前端工程师都得把握的 webpack Loader【浏览倡议:30min】
- [x] 轻松了解 webpack 热更新原理【浏览倡议:1h】
- [x] webpack 中那些最易混同的 5 个知识点【浏览倡议:30min】
- [x] 前端构建秘籍【浏览倡议:30min】
2018 年文章:
- [x] 手把手教你撸一个 Webpack Loader【浏览倡议:1h】
- [x] 手把手教你撸一个繁难的 webpack【浏览倡议:30min】
- [x] Webpack 揭秘——走向高阶前端的必经之路【浏览倡议:30min】
- [x] webpack 详解【浏览倡议:1h】
- [x] webpack4- 用之初体验,一起敲它十一遍【浏览倡议:30min】
- [x] 带你走进 webpack 世界,成为 webpack 头等玩家。【浏览倡议:20min】
- [x]【webpack 进阶】你真的把握了 loader 么?- loader 十问【浏览倡议:20min】
- [x] webpack 打包之后的文件过大的解决办法【浏览倡议:10min】
- [x] 基于 Webpack 搭建 React 开发环境【浏览倡议:10min】
2017 文章:
- [x] Webpack 源码(一)—— Tapable 和 事件流【浏览倡议:10min】
4.2 Webpack 性能优化
返回目录
2019 年文章:
- [x] Webpack 优化——将你的构建效率提速翻倍【浏览倡议:10min】
- [x] 性能优化篇 —Webpack 构建速度优化【浏览倡议:10min】
- [x] 应用 webpack4 晋升 180% 编译速度【浏览倡议:10min】
- [x] 多过程并行压缩代码【浏览倡议:5min】
- [x] webpack 4: Code Splitting 和 chunks 切分优化【浏览倡议:5min】
2018 年文章:
- [x] Tree-Shaking 性能优化实际 – 原理篇【浏览倡议:10min】
- [x] 体积缩小 80%!开释 webpack tree-shaking 的真正后劲【浏览倡议:10min】
- [x] 你的 Tree-Shaking 并没什么卵用【浏览倡议:5min】
- [x] webpack 如何通过作用域剖析打消无用代码【浏览倡议:5min】
- [x] 让你的 Webpack 腾飞—考拉会员后盾 Webpack 优化实战【浏览倡议:5min】
- [x] webpack dllPlugin 打包体积和速度优化【浏览倡议:5min】
- [x] webpack 优化之 code splitting【浏览倡议:5min】
2017 年文章:
- [x] Webpack 打包优化之速度篇【浏览倡议:5min】
- [x] 减速 Webpack- 放大文件搜寻范畴【浏览倡议:5min】
- [x] Webpack 大法之 Code Splitting【浏览倡议:5min】
4.3 Scope Hoisting
返回目录
- [x] webpack 的 scope hoisting 是什么?【浏览倡议:5min】
- [x] 通过 Scope Hoisting 优化 Webpack 输入【浏览倡议:5min】
- [x]【Webpack】654- 了不起的 Webpack Scope Hoisting 学习指南【浏览倡议:5min】
4.4 Tree Shaking
返回目录
- [x] Tree Shaking – Webpack 5.0.0-rc.0【浏览倡议:仅供参考】
- [x] Webpack 4 Tree Shaking 终极优化指南【浏览倡议:30min】
- [x] Tree-Shaking 性能优化实际 – 原理篇 – 2018【浏览倡议:仅供参考】
- [x] Webpack4: Tree-shaking 深度解析 – 2019【浏览倡议:仅供参考】
4.5 懒加载
返回目录
- [x] Vue Webpack 打包优化——路由懒加载(按需加载)原理解说及应用办法阐明【浏览倡议:20min】
- [x] 懒加载 – Webpack v5.0.0-rc.0【浏览倡议:5min】
- [x] webpack 的代码宰割(路由懒加载同理)【浏览倡议:10min】
jsliang 的文档库由 梁峻荣 采纳 常识共享 署名 - 非商业性应用 - 雷同形式共享 4.0 国内 许可协定 进行许可。<br/> 基于 https://github.com/LiangJunrong/document-library 上的作品创作。<br/> 本许可协定受权之外的应用权限能够从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处取得。