jsliang 求职系列 - 36 - 前端工程化系列总结

一 目录

不折腾的前端,和咸鱼有什么区别javascript

目录
一 目录
二 复习知识点
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 篇文章,感谢小伙伴们的支持。html

2.1 Babel

返回目录

文章地址:Babel前端

  • [x] AST:抽象语法树,是源代码语法结构的一种抽象表示
  • [x] 原理:将现有的 ES6+ 代码,先经过 词法分析语法分析 以后 解析AST,而后将这份 AST 转换 为咱们须要形式的 AST,最后将这个 AST 再转换成 ES5 或者指望格式的内容。

2.2 Webpack

返回目录

文章地址:Webpackvue

  • [x] 是什么:本质是一个模块打包器,其工做是将每一个模块打包成相应的 bundle
  • [x] 核心概念modeentryoutputloaderplugin
  • [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 开始配置 Webpackjava

    • [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] 懒加载node

    • [x] 代码分割code splitting
    • [x] 实现原理:子模块单独打包、借助函数延迟加载
    • [x] Vue 按需加载
  • [x] 热更新react

    • [x] 开启方式:配置 devServer,添加热更新插件 HotModuleReplacementPlugin
    • [x] 热更新原理
  • [x] 3 种 hashwebpack

    • [x] hash:整个项目只要有文件更改,那就变动
    • [x] chunkhash:某个入口对应的 chunk 进行了变动,那就生成新的 hash 值,不会影响其余 chunk
    • [x] contenthash:对应某个文件内容变动了,才会更换这个文件,生成新的 hash,而不会影响同一个模块下其余文件
  • [x] source map:将编译、打包、压缩后的代码映射回源代码的过程

2.3 Webpack - Tree Shaking

返回目录

文章地址:Webpack - Tree Shakinggit

  • [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 Hoistinges6

  • [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 为例,能够经过 includeexclude 帮助咱们避免 node_modules 这类庞大文件夹]
  • [x] 缓存cache-loaderuglifyjs-webpack-plugin,将编译结果写进硬盘缓存,下次文件若是没有变化则直接拉取缓存
  • [x] 多进程Happypackthread-loader,将任务分解成多个子进程去并发执行,提升打包效率
  • [x] 多进程压缩Webpack 自带的 UglifyJSWebpackPlugin 压缩插件是单线程运行的,而 TerserWebpackPlugin 能够并行执行(多线程)
  • [x] 静态资源分离CommonsChunkPlugins 每次构建都会从新构建 vendor,出于效率问题使用 DllPlugin 能够将第三方库单独打包到一个文件中,只有依赖自身发生版本变化才会从新打包
  • [x] 打包资源压缩

    • [x] JS 压缩:UglifyJSWebpackPluginTerserWebpackPlugin
    • [x] HTML 压缩:HtmlWebpackPlugin
    • [x] CSS 压缩:MiniCssExtractPlugin
    • [x] 图片压缩:ImageWebpackPlugin
    • [x] Gzip 压缩:不包括图片
  • [x] Tree Shaking
  • [x] Scope Hoisiting
  • [x] 按需加载

三 参考文献

返回目录

本系列参考文献有 79 篇.

3.1 杂

返回目录

2020

2019

2018

3.2 Babel

返回目录

3.3 模板引擎

返回目录

3.4 前端监控

返回目录

四 Webpack 参考文献

返回目录

Webpack 系列参考文献有 52 篇文章。

4.1 Webpack 系列文章

返回目录

其余

2020 年文章

2019 年文章

2018 年文章

2017 文章

4.2 Webpack 性能优化

返回目录

2019 年文章

2018 年文章

2017 年文章

4.3 Scope Hoisting

返回目录

4.4 Tree Shaking

返回目录

4.5 懒加载

返回目录

jsliang 的文档库由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议 进行许可。<br/>基于 https://github.com/LiangJunrong/document-library 上的做品创做。<br/>本许可协议受权以外的使用权限能够从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处得到。
相关文章
相关标签/搜索