zoukankan      html  css  js  c++  java
  • webpack3.10.0(入门系列基本概念1)

    一、概念

    webpack的核心是一个用于现代JavaScript应用程序静态模块打包程序。当webpack处理您的应用程序时,它会递归地构建一个依赖图,其中包含应用程序所需的每个模块,然后将所有这些模块打包到一个或多个包中

    在开始学习之前我们需要了解它的四个核心概念:

    • 入口(entry)
    • 产量(output)
    • 装载机(loader)
    • 插件(plugins)

    入口(entry)

    入口就是整个程序打包的入口文件,入口文件里面有各种引入文件的依赖关系,进入之后,webpack会找出依赖的其他js,css等模块,下面是一个简单的entry配置示例:

    在webpack.config.js(webpack默认的启动入口)

    module.exports = {
       entry:{
            main:'./src/script/main.js',
        },
    };
    

      

    entry里面你可以根据需求配置多个入口,示例如下

    module.exports = {
       entry:{
            main:'./src/script/main.js',
            a: './src/script/a.js',
            b: './src/script/b.js',
            c: './src/script/c.js'
        },
    };

     出口(output)

    输出属性告诉webpack将打包后的文件存放在哪里以及如何命名这些文件。您可以通过output在您的配置中指定一个字段来配置这一部分

    webpack.config.js

    const path = require('path');
    
    module.exports = {
      entry: './path/to/my/entry/file.js',
      output: {
        path: path.resolve(__dirname, 'dist'),//resolve是node里面path的一个方法,指向绝对路径
        filename: 'my-first-webpack.bundle.js'//文件打包后的文件名
      }
    };

    上面的代买中output.path表示文件打包后的存放路劲,output.filename表示文件打包后的文件名

    切记:webpack2.0以上的版本输出文件必须设置绝对路径,不然会报错

    装载机(loader)

    loader的作用是能让webpack处理其他非js文件,原则上webpack只认识js文件,webpack打包时会通过loader处理文件,会把引入的文件都当做模块来处理,常见的loader有style-loader,css-loader,file-loader,url-loader,less-loader等

    loader在webpack配置中有两个目的:

    1. test属性表示哪种类型的文件应该被转换
    2. 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;
    

     上面的配置rules为具有两个必需属性的单个模块定义了一个属性:testuse这告诉webpack的编译器如下:

     “嘿,webpack编译器,当你遇到一个路径,解析到一个”.txt“文件里面的一个require()import语句,使用raw-loader来转换它,然后再添加到包。

    插件(plugins)

    虽然loader被用来转换某些类型的模块,但是插件可以用来执行更广泛的任务。插件的范围从捆绑优化和缩小到定义类似环境的变量。插件的功能是非常强大,可以用来解决各种各样的任务。

    为了使用一个插件,你需要require()它并将其添加到plugins数组中。大部分插件都可以通过选项进行自定义。既然你可以在一个配置中多次使用一个插件来达到不同的目的,你需要通过调用new操作符来创建它的一个实例

     webpack.config.js
    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;
    

     附上官网给出的一些插件列表https://webpack.js.org/plugins/


    本篇文章主要介绍webpack的基本概念,下一篇文章将通过实例demo说明具体用法
     
     
     
  • 相关阅读:
    草稿~!
    Jmeter使用:JSON返回数据处理
    Jmeter使用:操作MySQL
    jmeter+ant+jenkins 搭建接口自动化测试环境
    【未完成】Jmeter接口自动化测试:参数化设置
    RDLC报表系列(六) 多图表-折线图和柱状图
    RDLC报表系列(五) 简单的图表-柱状图
    RDLC报表系列(四) 矩阵
    流程图里的形状符号的含义及意义(转 )
    Login failed for user 'NT AUTHORITYNETWORK SERVICE'的解决方法
  • 原文地址:https://www.cnblogs.com/fuzhengyi/p/webpack.html
Copyright © 2011-2022 走看看