webpack学习(1)

作者: FeRookie | 来源:发表于2017-07-26 21:56 被阅读0次

概念

webpack是现在JavaScript应用程序打包生成器。当webpack在处理程序的时候,会递归的构建依赖关系图,其中包括应用程序所需要的每个模块,然后将这些模块打包成bundle由浏览器加载,通常只有一个。

首先我们先理解四个概念:

  • 入口( Entry)
    webpack创建程序的依赖关系图,那么是需要一个入口文件。入口文件告诉webpack是从哪里开始创建依赖关系图,然后根据依赖关系图进行打包所需要的文件。
    在webpack中我们通过webpack 配置对象(webpack configuration object) 中的entry属性进行设置入口文件。如下例子:
//webpack.config.js
module.exports= {
    entry: './main.js'
}
  • 出口(Output)
    当所有的资源(assets)一起后,还需要在哪里告诉webpack打包应用程序,webpack的output属性告诉了我们在哪里处理归拢在一起的代码。
//webpack.config.js
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'
    }
};

如上,我们通过output.filenameoutput.path告诉了bundle的名称和以及要生成到哪里。

  • Loader
    在webpack中可以将项目中任何的资源作为模块来进行对待,然后webpack自身只理解JavaScript。loader是在文件被添加到依赖图中时,其转换为模块。
    在较高层面中webpack中配置loader有两个目标:
    1. 识别应该被对应loader进行转换的那些文件(test属性
    2. 转换这些文件,从而使其能够被添加到依赖图中,并且最终添加到bundle中。(use属性
//webpack.config.js
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 和 use。这告诉 webpack 编译器(compiler) 如下信息:

“嘿,webpack 编译器,当你碰到「在 require()/import 语句中被解析为 '.txt' 的路径」时,在你对它打包之前,先使用 raw-loader 转换一下。”

  • 插件(Plugins)
    loader仅在每个文件的基础上进行转换,而插件更常用于在打包模块的“ compilation”和“ chunk”生命周期执行操作和自定义功能。
    如果想要使用插件,必须先通过require()该插件,然后将其添加进入plugins数组中,我们也可以因为不同的目的多次使用同一个插件,这时需要通过new创建一个它的实例。
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;

相关文章

  • webpack4配置记录

    webpack学习笔记 一、 学习webpack 1. webpack基本环境 npm init -y cnpm ...

  • Vue之Webpack学习

    七、Webpack学习 目录:什么是Webpack、安装Webpack、使用Webpack 1.什么是Webpac...

  • webpack学习(1)

    概念 webpack是现在JavaScript应用程序打包生成器。当webpack在处理程序的时候,会递归的构建依...

  • webpack学习1

    1 什么是webpack Webpack 是一个前端资源的打包工具,它可以将js、image、css等资源当成一个...

  • 你一定喜欢看的 Webpack 2.× 入门实战

    最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的...

  • 2017-07-03

    webpack更好配置 webpack进阶-知乎 webpack 学习 nodejs 学习

  • webpack学习1:webpack打包报错

    这几天想重新学习一下webpack,之前只是简单的会用,学习了技术胖的视频,他的webpack是3.6版本的,按照...

  • webpack学习

    收集并学习webpack## 1、简书-webpack基本入门 http://www.jianshu.com/p/...

  • webpack - 项目优化

    Webpack学习笔记webpack - 项目优化webpack实现原理webpack - loaderwebpa...

  • webpack实现原理

    Webpack学习笔记webpack - 项目优化webpack实现原理webpack - loaderwebpa...

网友评论

    本文标题:webpack学习(1)

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