webpack 基础概念理解

一、webpack 基础概念理解

  1. 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundlewebpack 支持 AMD (RequireJS)、ES ModulesCommonJS 等模式,如图所示:

webpack 基础概念理解_第1张图片

  1. webpackV1 时,功能主要为 编译、打包,HMR (模块热更新),代码分割和文件处理。

  2. webpackV2 时,功能进化为 Tree ShakingES module,动态 Import 和新的文档。

  3. webpackV3 时,功能进化为 Scope Hoisting 作用域提升和Magic Comments配合动态import 使用,Scope HositingWebpack 3的标志性特征。

  4. webpack 核心概念分为 EntryOutputLoadersPlugins和 模式。

  5. Entry 是指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的,最后输出到称之为 bundles的文件中。Entry是 代码的入口、打包的入口,单个或多个。

  6. Output是告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./distOutput 是 打包成的文件(bundle)、一个或多个、自定义规则 和 配合 CDN

  7. Loaders 是 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。Loaders 是 处理文件和转化为模块。常用的 loader,编译相关有babel-loaderts-loader等等,样式相关有style-loadercss-loaderless-loaderpostcss-loader等等,文件相关有file-loaderurl-loader等等。

  8. Plugins 是从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务。. Plugins 是参与打包整个过程、打包优化和压缩、配置编译时的变量和极其灵活。常用Plugins,优化相关有CommonsChunkPlugiUglifyjsWebpackPlugin等等,功能相关有 ExtractTextWebpackPlugiHtmlWebpackPluginHotModuleReplacementPluginCopyWebpackPlugin等等

  9. 模式是通过选择developmentproduction 之中的一个,来设置mode 参数,你可以启用相应模式下的 webpack 内置的优化。

你可能感兴趣的:(Gulp,Webpack,webpack,基础概念)