简单介绍一下Webpack
webpack是一个模块打包工具,可以使用它管理项目中的一些依赖,并编译输出模块所需要的静态文件。它可以很好的管理打包开发中用到的HTML,CSS,JavaScript静态文件(图片字体)的等,让开发更高效。
webpack的基本功能和工作原理
- 代码转换
- TypeScript编译成JavaScript、scss编译成CSS等
- 文件优化
- 压缩JavaScript、CSS、HTML代码,压缩合并图片等
- 代码分割
- 提取多个页面的公共代码,提取首屏不需要执行部分的代码让其异步加载
- 模块合并
- 在采用模块化的项目有很多模块和文件,需要构建功能把模块分类合并成一个文件
- 自动刷新
- 监听本地源代码的边划自动构建,刷新浏览器
- 代码校验
- 在代码提交到仓库之前需要检测代码是否规范,以及单元测试是否通过
自动发布
从entry里配置的module开始递归解析entry依赖的所有module
- 每找到一个module,就会根据配置的loader去找对应的转换规则
- 对module进行转换后,在解析出当前module依赖的module
- 这些模块会以entry为单位分组,一个entry和其所依赖的module被分到一个chunk
- 最后webpack会把所有的chunk转换成文件输出
在整个流程webpack会在恰当的时机执行plugin里定义的逻辑
webpack打包原理
将所有依赖打包成一个bundle.js,通过带啊吗分割成单元片段按需加载
什么是webpack,与gulp有什么区别?
webpack是一个模块打包工具,可以递归的打包项目中的所有模块,最终生成几个打包后的文件
-
什么是entry,output?
entry入口,告诉webpack要使用哪个模块作为构建项目的期待你,默认为./src/index.js
output出口,告诉webpack在哪里输出它打包好的代码以及如何命名,默认为./dist
什么是loader,plugins?
loader是用来告诉webpack如何转换某一类型的文件,并且引入到打包出的文件中。
plugins作用更大,可以打包优化,资源管理和注入环境变量
什么是bundle,chunk,module?
bundle是webpack打包出来的文件,chunk是webpack在进行模块的以来分析的时候,代码分割出来的代码块,module是开发中的单个模块
使用过webpack里面那些loader、plugin?
babel-loader:将ES6+转换成ES5-
- css-loader style-loader:解析CSS文件,能够解释@import url()等
- html-webpack-plugin:压缩HTML