美文网首页
webpack 学习总结

webpack 学习总结

作者: dkvirus | 来源:发表于2017-10-17 09:52 被阅读0次
webpack.png

webpack 干嘛用的?

index.js 依赖 a.js,a.js 依赖 b.js,b.js 依赖 c.js,以此类推。但是,index.js 只依赖 a.js 中的某个方法,传统打包会将 index.js 和 a.js 都打包在一起,这造成了资源的浪费。我们的期望是打包结果为 index.js + a.js 中被用到的那个方法,而 a.js 中没有用到的方法就不应该被打包到。

优化打包大小。webpack 会根据入口文件 index.js 找这种依赖关系,生成递归图表,并且只打包需要的的部分。

它的配置文件及其复杂,但是核心就四个概念。

  • Entry
  • Output
  • Loaders
  • Plugins

下面会概述这四个核心概念,至于更为具体的配置,参照各自对应详细介绍。

Entry(入口文件)

配置如下,得告诉 webpack 入口文件是啥。

module.exports = {
  entry: './path/to/my/entry/file.js'
};

Output(出口)

webpack 打包好了,得告诉它输出在什么目录下 output.path,打包后的文件叫啥名字 output.filename

const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  }
};

Loaders(加载器)

webapck 本身只能处理 .js 文件,但实际应用中还有其它静态资源如:.css.less.jpg 等。这些文件内也存在打包资源浪费问题。加载器 Loaders 做的事情就时将 .js 文件之外的其它文件转换为 webpack 能够识别的 模块(使用 import 或者 require() 引入的东东,你是否看到过 import styles from './index.less'),这样就可以使用 webpack 进行打包这些资源了。

const path = require('path');

const config = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  },
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  }
};

module.exports = config;

module.rules 中有两个属性:

  • test 告诉 webpack 哪些文件类型想要转换为模块;
  • use 使用啥加载器来转换这些文件类型为 webpack 能识别的模块。

Plugins(插件)

webpack 作为打包器的功能上面基本介绍完了。

但是搞一个东东,人说要是还有这个功能就好了,人又说还有那个功能就好了,webpack 维护团长肯定想要做大做强,让 webpack 无所不能,于是透露出一个接口,用户(开发人员)可以自己开发插件,实现各种奇葩的业务需求。

比如:压缩代码 UglifyJsPlugin 插件。想想这个功能确实有用,索然打包只打包用到的代码可以减小打包大小,但是如果再进行一次压缩,那么打包大小会更小,这在 web 端可能没啥影响,但在移动端,就手机那丢丢内存,能省一点是一点,确实是有用的。(可以理解在 web 端就不需要压缩了吗,设置不需要打包了吗??)

const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const webpack = require('webpack'); //to access built-in plugins
const path = require('path');

const config = {
  entry: './path/to/my/entry/file.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  },
  module: {
    rules: [
      { test: /\.txt$/, use: 'raw-loader' }
    ]
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin(),
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]
};

module.exports = config;

相关文章

  • webpack学习总结

    Webpack学习总结 此文只是自己学习webpack的一些总结,方便自己查阅,阅读不变,非常抱歉!! 下载安装:...

  • 【01】webpack4.0教程_基础_1

    学习webpack4.0的笔记,循序渐进,后续会再做系统总结 [toc] webpack安装 总结 安装本地的we...

  • webpack总结 & 个人理解

    目录: 学习资源 概念总结 webpack必要元素 webpack其他元素 遇到的问题 常见loader整理 常见...

  • webpack学习总结

    webpack介绍 webpack是一个javascript静态模块打包器(module bundle)当webp...

  • webpack 学习总结

    webpack 干嘛用的? index.js 依赖 a.js,a.js 依赖 b.js,b.js 依赖 c.js,...

  • webpack学习总结

    webpack官网:http://webpack.github.io/http://webpack.github....

  • webpack学习总结

    webpack-dev-server 只在开发模式下启用,其他模式下不启用。 webpack 有模块热更新功能 w...

  • webpack学习总结

    1-1.webpack究竟是什么? webpack其实就是一个模块打包器。 1-2.什么是模块打包工具? 1-3....

  • 上手webpack,有这个教程就可以了

    最近一直在学习webpack的基础知识,从以下5个大的点进行总结。 1.什么是webpack?2.学习webpac...

  • webpack学习总结01

    webpack打包原理 webpack只是一个打包模块的机制,只是把依赖的模块转化成可以代表这些包的静态文件。并不...

网友评论

      本文标题:webpack 学习总结

      本文链接:https://www.haomeiwen.com/subject/izbruxtx.html