简介

webpack 学习笔记。

前端构建必要性

开发复杂化:开发越来越复杂

框架去中心化:框架,包越来越零散

语言编译化

开发模块化

webpack是什么

webpack 是一个模块打包器,它可以递归的打包项目中的所有模块,最终生成几个打包后的文件。

支持 code-splitting、

模块化(AMD、ESM、CommonJS)、

强大插件系统(处理静态资源)、

全局分析;

webpack版本功迭代

V1: 编译、打包;HRM(模块热更新);代码分割;文件处理;

V2: Tree Shaking;ES Module(1版本借助babel);动态import(1版本通过require.ensure);新的文档;

V3: Scope Hoisting(作用域提升、打包后性能提升)、Magic Comments(配合动态import使用)

V4: 零配置概念、模式(mode)、optimization(优化);

bundle、chunk、module是什么

chunk:代码块;懒加载代码块(require.ensure)、提取公共的代码块(commensChunkPlugin)、动态加载的代码块(import);

bundle:一堆资源(assets)合并在一起;

module:loaders处理完的文件都是一个一个的模块(如图片、csss等);

Loader、Plugin是什么

Loader:处理非JS文件;转化为JS模块;

Plugin: 用来定义webpack打包过程的方式,一个插件是含有apply方法的对象,通过这个方法可以参与到整个webpack打包的各个流程(生命周期)。

Tree-shaking是什么

Tree-shaking 是指在打包中剔除哪些引入了,但是在代码中没有被用到的那些死代码

在 webpack3 中 Tree-shaking 是通过 UglifyJSPlugin 来 Tree-shaking JS

CSS需要使用 Purify-CSS 做到 Tree-shaking

框架对比

1、rollup
优点:文件很小、执行很快(天生 Tree Shaking、ES6模块化工具)
缺点:不支持代码拆分(Code Splitting)、动态import、不支持CommonJS(可选插件)和AMD、模块的热更新(HMR)
应用:rollup适合构建框架,而webpack适合构建应用(主要看应用场景)

2、gulp
gulp严格上讲,模块化不是他强调的东西,他旨在规范前端开发流程,侧重整个过程的控制。(规范前端开发、侧重过程控制)
webpack更是明显强调模块化开发,而那些文件压缩合并、预处理等功能,不过是他附带的功能。(目的是模块化开发)

项目地址

地址: https://github.com/yunaichun/webpack-study

参考资料

powered by Gitbook该文件修订时间: 2023-05-16 18:08:03

results matching ""

    No results matching ""