webpack的后花园
Jonnzer Lv4

1.webpack底层

它是一个打包工具。
webpack本身,在不借助loader的情况下,只会打包js。

(引用)webpack处理应用程序时,会递归的构建一个依赖关系图,其中包括应用程序需要的每个模块,然后把所有模块打包成一个或多个bundle。

2.几个核心概念

  • 入口
  • 出口
    • 入口和出口很好理解,入口就是打包谁,出口就是要输出的文件。
      entry:
      output:{ path, filename }
  • loader
    • 帮助webpack识别非js文件,包括css,图片等。
    • 示例:
      test: 作用等同于正则里面的匹配
      use: 使用loader
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      rules: [
      {
      test: /\.js$/,
      use: [
      'babel-loader',
      {
      loader: 'eslint-loader',
      options: {
      emitWarning: true,
      emitError: true,
      failOnError: true
      }
      },
      ],
      exclude: /node_modules/
      },
      {
      test: /\.css$/, use: ["style-loader","css-loader"]
      },
      {
      test: /\.(png|jpg)$/,
      loader: 'url-loader?limit=8192'
      },
      {
      test: /\.vue$/,
      use:[
      {
      loader: 'vue-loader',
      options: {
      cssSourceMap:false,
      transformToRequire:{},
      },
      },
      {
      loader: 'eslint-loader',
      options: {
      emitWarning: true,
      emitError: true,
      failOnError: true,

      }
      },
      ],
      exclude: /node_modules/
      },
      ]
  • plugins
    我还没认真弄懂plugins,它好像有很多好用的功能。比如压缩js或者生成好的静态资源增加版本号。待研究 @todo

常见问题:
1、webpack打包原理?
2、loader,plugins分别是?
3、热更新原理是?
4、webpack性能优化的方法?


  • webpack的打包原理:(树状依赖)

    • 利用babel完成代码转换,并生成单个文件的依赖.
    • 从入口开始递归分析,并生成依赖图谱
    • 将各个引用模块打包为一个立即执行函数
    • 将最终的bundle文件写入bundle.js中
  • loader其实就是一个Node.js 模块,这个模块需要导出一个函数

  • 本文标题:webpack的后花园
  • 本文作者:Jonnzer
  • 创建时间:2019-12-11 17:17:00
  • 本文链接:https://jonnzer.github.io/2019/12/11/webpack/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论