• webpack核心概念


    一、webpack四个核心概念


    1、入口【Entry】

    webpack将创建所有应用程序 依赖关系图表。图表的起点被称之为 入口起点。入口起点告诉webpack从哪里开始,并遵循着依赖关系图表知道打包什么。可以将您的应用入口起点认为是跟上下文或app的第一个启动文件。

    const config = {
      entry: {
        app: './src/app.js'
      }
    }
    
    module.exports = config;
    2、出口【Output】

    将所有资源打包在一起,仍然告诉webpack在哪里打包我们的应用,即将打包资源输出到什么地方。

    const config = {
      entry: {
        app: './src/app.js'
      },
      output: {
        filename: 'webpack.bundle.js',
        path: './dist'
      }
    }
    
    module.exports = config;
    3、加载器【Loader】

    webpack的目标是,让项目中的所有资源都成为webpack的关注点,而浏览器不需要考虑这些(这并不意味着资源都必须打包在一起)。webpack把每个文件(.css, .html, .scss, .jpg, .etc)都作为模块处理。然而webpack只了解JavaScript,所有需要加载器来处理其它类型的文件。
    因为文件已被添加到了依赖图表,所有webpack加载器会将这些文件转换为模块。
    loader属性要实现的两个目标:
    (1)识别出应该被特定的加载器转换的文件;
    (2)转换能够被添加到依赖图表的文件(并且最终打包)

    const config = {
      entry: {
        app: './src/app.js'
      },
      output: {
        filename: 'webpack.bundle.js',
        path: './dist'
      },
      module: {
        loaders: [
          {
            test: /.(js|jsx)$/,
            loader: 'babel-loader'
          },
          {
            test: /.css$/,
            loaders: ['style', 'css']
          }
        ]
      }
    }
    
    module.exports = config;

    loader的两个必选属性test和loader告诉了webpack如下行为:webpack编译器,当你碰到在require()/import语句中被解析为.js.jsx的路径时,在你把它们添加并打包之前,要先使用babel-loader去转换。同理,css也是这个样子,只不过使用的loader模块不同。

    4、插件【Plugins]

    加载器仅基于单个文件执行转换,插件最常用于(但不限于)在打包模块的“编译”和“组块”时执行操作和自定义功能。webpack的插件系统极其强大和可定制。
    为了使用插件,需要require它们,并且把它们添加到plugins数组。多数插件可以通过potion来自定义。由于你可以在一个配置多次使用插件用于不同的目的,因此你需要使用new来创建插件的实例,并且调用插件。

    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const htmlWP = new HtmlWebpackPlugin({template: './src/index.html'});
    const config = {
      entry: {
        app: './src/app.js'
      },
      output: {
        filename: 'webpack.bundle.js',
        path: './dist'
      },
      module: {
        loaders: [
          {
            test: /.(js|jsx)$/,
            loader: 'babel-loader'
          },
          {
            test: /.css$/,
            loaders: ['style', 'css']
          }
        ]
      },
      plugins: [
        htmlWP
      ]
    }
    
    module.exports = config;

    二、webpack解析三种文件路径

    (1)绝对路径
    (2)相对路径
    (3)模块路径

  • 相关阅读:
    PC客户端抓包方法(charles+proxifier)
    Charles分享
    python_fullstack数据库(一)-HTML
    python_fullstack数据库(三)-MySQL表操作
    python_fullstack数据库(二)-MySQL库操作
    python_fullstack数据库(一)-MySQL基本概念
    python_fullstack基础(十八)-并发编程
    python_fullstack基础(十七)-网络编程
    python_fullstack基础(十五)-面向对象三大特性
    python_fullstack基础(十四)-面向对象初识
  • 原文地址:https://www.cnblogs.com/zhumingzhenhao/p/7239742.html
Copyright © 2020-2023  润新知