zoukankan      html  css  js  c++  java
  • webpack之核心概念

      本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。

    学习webpack之前需要先理解四个核心概念:

    • 入口(entry)
    • 输出(output)
    • loader
    • 插件(plugins)

    1.入口(entry)

      入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。每个依赖项随即被处理,最后输出到称之为 bundles 的文件中.

    简易示例:

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

     2.出口(output)

      output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。你可以通过在配置中指定一个output字段,来配置这些处理过程。

    简易示例:

    const path = require('path')
    
    module.exports={
        entry:'./file.js',
        output:{
            path:path.resolve(__dirname,'dist'),     // 输出文件夹
            filename:'boundle.js'    // 输出文件的名称
        }       
    }

     3.loader (module)

    loader让wabpack能够处理那些非JavaScript文件(因为webpack自身职能理解JS)。loader可以将所有类型的文件装换成webpack能够处理的有效模块,然后你就可以利用webpack的打包能力对它进行处理。

    webpack配置中loader有两个属性:test和use

    • test 属性:用于标识出应该被对应的loader进行转换的某个或某些文件
    • use 属性:表示进行转换时,应该使用哪个loader
    module.exports={
        output:{},
        module:{
            rules:[
               { test:/.txt/ , use: 'raw-loader' }   // 表示在require或者import时遇到了.txt的路径时,使用raw-loader进行转换
            ]
        }   
    }

    4.插件(plugins)

    loader被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种任务。

    插件的使用:要使用一个插件,只需要require()它,然后添加到plugins数组中。多数插件可以通过选项(option)自定义。也可以在一个配置文件中因为不同目的而多次使用同一插件,这时候需要通过使用new操作符来创建它的一个实例。

    const HtmlWebPackPlugin = require('html-webpack-plugin');   // npm安装
    cosnt webpack = require('webpack');   // 用于访问内置插件
    
    module.exports={
        module:{
            [
                { test: /.txt$/, use: 'raw-loader' }
            ]
        },
        plugins:[
            new HtmlWebPackPlugin ({template:'./src/index.html'})
        ]
    }

    5.模式

    通过选择development或者production中的一个,来设置mode参数,你可以启用相应模式下的webpack内置的优化

    module.exports={
        mode:'production'
    }
  • 相关阅读:
    Delphi公用函数单元
    Delphi XE5 for Android (十一)
    Delphi XE5 for Android (十)
    Delphi XE5 for Android (九)
    Delphi XE5 for Android (八)
    Delphi XE5 for Android (七)
    Delphi XE5 for Android (五)
    Delphi XE5 for Android (四)
    Delphi XE5 for Android (三)
    Delphi XE5 for Android (二)
  • 原文地址:https://www.cnblogs.com/codexlx/p/13178085.html
Copyright © 2011-2022 走看看