webpack,了解一下

一文带你了解webpack 那些你必须知道的webpack知识点 阅读详情

webpack

webpack
JavaScript 应用程序的静态模块打包器(static module bundler)
在处理应用程序时,会在内部创建一个依赖图 dependency graph
映射到项目需要的每个模块,将所有这些依赖生成到一个或多个 bundle

入口 entry

用来作为构建内部依赖图的开始
webpack.config.js
entry #输入 output
创建 bundles 存放的文件

loader

处理非 js 文件
rules 用什么插件进行处理

插件 plugins

用于转换非 js 文件先 require 安装然后再 new 创建一个实例

 plugins: [
    new HtmlWebpackPlugin({template: './src/index.html'})
  ]

模式参数

  • development
  • production
  • none

入口起点 entry points

分离应用程序 app 和第三方 vendor 入口

entry: {
    app: './src/app.js',
    vendors: './src/vendors.js'
  }

每个 bundle 中都有一个 bootstrap


多页面应用程序

  entry: {
    pageOne: './src/pageOne/index.js',
    pageTwo: './src/pageTwo/index.js',
    pageThree: './src/pageThree/index.js'
  }

输出 output

  output: {
    filename: 'bundle.js', //文件名
    path: '/home/proj/public/assets' //绝对路径
  }


多入口
配置创建多个单独的 chunk
使用多个入口起点或 CommonsChunkPlugin 的插件
应该使用占位符确保每个文件具有唯一的名称

filename: '[name].js',

模式mode

 mode: 'production'

从cli参数中传递

webpack --mode=production
  • development
    • NamedChunksPlugin
    • NamedModulesPlugin
  • production
    • FlagDependencyUsagePlugin
    • FlagIncludedChunksPlugin
    • ModuleConcatenationPlugin
    • NoEmitOnErrorsPlugin
    • OccurrenceOrderPlugin
    • SideEffectsFlagPlugin
    • UglifyJsPlugin

loader

用于对模块的源代码进行转换
loader可以再import 或加载模块时预处理文件
将内联图像转换为data URL

使用方式

  • 配置:在webpack.config.js文件中指定loader

    rules: [
      {
        test: /\.css$/,
        use: [
          { loader: 'style-loader' },
          {
            loader: 'css-loader',
            options: {
              modules: true
            }
          }
        ]
      }
    ]
  • 内联:在每个import语句中显式指定loader

    import Styles from 'style-loader!css-loader?modules!./styles.css';

    import 语句,或任何等效import的方式中指定loader
    使用!将资源中的loader分开

  • cli:在shell命令中指定

loader特性

支持链式传递,loader链中每个loader,都对前一个loader处理后的资源进行转换.
loader可以是同步的,也可以是异步的
loader运行再nodes.js中,并且能够执行任何可能的操作
loader接收查询参数,用于对loader 传递配置
loader也能够使用options对象进行配置
除了使用package.json常见的main属性,还可以将普通的npm模块导入loader,做法是在package.json里定一个loader字段

解析

loader 将从模块路径解析

插件plugins

插件是webpack的支柱功能

插件是一个具有apply方法的JavaScript对象
apply属性会被webpack compiler调用,并且compiler对象可在整个编译生命周期访问

ConsoleLogOnBuildWebpackPlugin.js
const pluginName = 'ConsoleLogOnBuildWebpackPlugin';

class ConsoleLogOnBuildWebpackPlugin {
  apply(compiler) {
    compiler.hooks.run.tap(pluginName, compilation => {
      console.log('webpack 构建过程开始!');
    });
  }
}

compiler hook的tap方法的第一个参数,它可以在所有hook中复用

插件可以携带参数/选项,必须再webpack配置中,向plugins属性传入 new 实例

const HtmlWebpackPlugin = require('html-webpack-plugin'); //通过 npm 安装
const webpack = require('webpack'); //访问内置的插件
const path = require('path');

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

配置configuration

webpack的配置文件,是导出一个对象的javascript文件

webpack根据对象定义的属性进行解析

webpack配置是标准的Node.js CommonJS模块
- 通过require()导入其他文件
- require()使用npm的工具函数
- 使用JavaScript控制流表达式 ?:操作符

模块modules

开发者将程序分解成离散功能块 discrete chunks of functionality

node.js支持模块化编程

模块解析 module resolution

解析规则
- 绝对路径
- 相对路径
- 模块路径

指向文件
- 如果路径具有文件扩展名,则直接被打包
- 否则,使用resolve.extensions选项作为文件扩展名解析
- 此选项告诉解析器在解析中能够接受那些扩展名

指向文件夹
- 文件加中包含package.json文件,则按照顺序查找 resolve.mainFields配置选项中指定的字段,
- 并且package.json中的第一个这样的字段确定文件路径

  • 如果package.json文件不存在或者package.json文件中的main字段没有返回一个有效路径
  • 则按照顺序查找 resolve.mainFiles配置选项中指定的文件名

  • 文件扩展名通过resolve.extensions 选项采用类似的方法进行解析

依赖图dependency graph

一个文件依赖于另一个文件,
webpack就视为文件之间有依赖关系

可以接受非代码资源,并且可以把他们作为依赖提供给你的应用程序

manifest

构建的典型应用程序或站点中,主要有三种
- 你或你的团队编写的源码
- 源码会依赖的任何第三发的library或vendor代码
- webpack的runtime和manifest,管理所有模块的交互

runtime

在浏览器运行时,webpack用来连接模块化的应用程序的所有代码
runtime包含:
在模块交互时,连接模块所需的加载和解析逻辑
包括浏览器中的已加载模块的连接,以及懒加载模块的执行逻辑

Manifest

manifest数据用来管理生成的index.html文件和bundle以及各种资源,把他们加载到浏览器中

当编译器开始执行、解析和映射应用程序,会保留所有模块的详细要点.
这个集合称为Manifest

打包完成发送到浏览器
运行时通过Manifest来解析和加载模块
import 或require语句转换为 webpack require 方法
此方法指向模块标识符
通过manifest 中的数据
runtime 将能够查询模块标识符,检索出背后对应的模块

构建目标targets

使用webpack 会编译为用于类nodes.js环境,而不是使用任意内置模块

可以通过打包两份分离的配置来创建同构的库

const path = require('path');
const serverConfig = {
  target: 'node',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'lib.node.js'
  }
  //…
};

const clientConfig = {
  target: 'web', // <=== 默认是 'web',可省略
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'lib.js'
  }
  //…
};

module.exports = [ serverConfig, clientConfig ];

模块热替换 hot module replacement

显著加快开发速度

Webpack入门到了解 文章目录Webpack的安装和介绍1.1 Webpack是什么1.2 webpack核心概念1.3 Webpack的安装1.3.1 全局安装(不推荐)超过4.0安装方式1.3.2 初始化项目文件1.3.3 在项目中安装webpackWebpack的快速使用2.1 加载非js文件2.1.1 加载CSS文本webpack 处理第三方文件类型的过程2.1.2 module 配置补充module.... 阅读详情

相关推荐

PyTorch复现PSMNet踩坑全记录:从环境配置到KITTI数据集训练

本文详细记录了使用PyTorch复现CVPR经典立体匹配模型PSMNet的全过程,从环境配置到KITTI数据集训练,特别针对2023年主流软硬件环境中的常见问题提供解决方案。文章重点介绍了PSMNet的金字塔池化模块和堆叠沙漏结构,帮助研究者和工程师快速实现工业级深度估计,节省大量试错时间。

weixin_30897233的博客 328

webpack系列--入门

这篇文章主要内容是webpack的基本概念。 webpack是什么? webpack是一个JavaScript应用程序的静态模块打包器,使用webpack可以对模块进行压缩、预处理、按需打包、按需加载等。 webpack的特点 插件化:webpack本身非常灵活,提供了丰富的插件接口。基于这些接口,webpack开发了很多插件作为内置功能。 速度快:webpack使用异步IO以及多级缓...

hyupeng1006的博客 289

用blender为模型贴图并在gazebo中显示

用blender为模型贴图并在gazebo中显示 首先我用的是最新的blender2.92版本,附上链接https://www.blender.org/download/。并设置好简体中文。语言可以在编辑->偏好设置->界面里面设置。 首先界面右上角的摄像头,方块,灯光三个场景全都删除。 接着导入stl格式的模型文件,下面以tianbot_mini上面的激光雷达的模型为例。 导入激光雷达模型后,点击进入上方的UV Editing按钮进入UV编辑界面 此时我面看见网格化的激光雷达模型

qq_48427527的博客 8001

webpack开发自定义功能插件

webpack 插件开发 简介 使用webpack开发一些自定义功能的插件,最主要的目的是了解webpack工作流的方式,更深层次的认识和了解webpack工作原理,这样以后如有需要,也可结合自身所在业务去定制不同的插件,来提高开发效率。 webpack提供的hook(钩子) 在webpack整个工作流中在不同的阶段对外提供了不同的hook,使得开发者可以利用这些钩子做一些自己定制化功能的plug...

问白的博客 4571

多标签分类怎么做?(Python)

首先简单介绍下,多标签分类与多分类、多任务学习的关系: 多分类学习(Multi-class):分类器去划分的类别是多个的,但对于每一个样本只能有一个类别,类别间是互斥的。例如:分类器判断这只动物是猫、狗、猪,每个样本只能有一种类别,就是一个三分类任务。常用的做法是OVR、softmax多分类

y1282037271的博客 1360

手把手教你用LTspice仿真BUCK-BOOST电路(附波形分析)

本文详细介绍了如何使用LTspice进行BUCK-BOOST电路的仿真与波形分析,涵盖电路原理、CCM与DCM模式特性、效率优化及常见问题解决方案。通过实战案例,帮助工程师快速掌握升降压转换电路的设计与调试技巧,提升电力电子设计能力。

julia4scientist的博客 1052

webpack4常用配置

webpack4 特性 webpack4 通过一系列默认配置,将 webpack3 常用的 plugin 都默认引入了,相对简化了配置项。实际上,一般项目 webpack4 与 webpack3 在基本配置上差别并不是很大,主要有以下不同: webpack4 需要配合 webpack-cli 一起使用 webpack4 增加了 mode 属性,设置为 development / producti...

weixin_34186931的博客 785

PID详解

1、什么是PID及其作用 设定一个输出目标,反馈系统传回输出值,如与目标不一致,则存在一个误差,PID 根据此误差调整输入值,直至输出达到设定值. 为什么需要PID呢,比如控制温度,我们需要设置一个要达到的目标温度值,当将温度稳定在目标温度值 例如,我们希望水的目标温度值为70°,其希望无非就是可以快速而且无抖动的达到70°,并稳定在70° 如果我们使用普通的方式加热,当温度到达70°后就以及停止加热,岂不是简单快速,当然用在要求不高的场合也可以,但是如果要求更高的场合呢,会出现温度到达70°后......

weixin_48435215的博客 5万+

Webpack 配置详解(含 4)——从 0 配置一套开发模板

前言源代码熟悉 webpack 与 webpack4 配置。webpack4 相对于 3 的最主要的区别是所谓的零配置,但是为了满足我们的项目需求还是要自己进行配置,不过我们可以使用一些 webpack 的预设值。同时 webpack 也拆成了两部分,webpack 和 webpack-cli,都需要本地安装。我们通过实现一个 vue 的开发模板(vue init webpack 模板,其实跟 v...

小猪的博客 1718

医学图像处理(一)使用U-Net进行MRI的肝脏分割

医学图像处理(一)使用U-Net进行MRI的肝脏分割数据集搜集训练集和测试集划分问题一: 测试集不包括GroundTruth问题二:T1和T2的数据能一起训练吗?问题三: T1的图像在文件夹中分成了InPhase和OutPhase,这个有什么区别?分离出肝脏将dicom文件转换为png格式数据增强U-net网络搭建自定义DatasetMain.py实验结果总结 图像分割小白一枚,之前接到一个MRI图像肝脏分割的任务。对于医学图像分割,第一想到的就是Unet. Unet在2015的MICCAI上首次提出,在医

qq_34003876的博客 2万+

CUDA编程 - Nsight system & Nsight compute 的安装和使用 - 学习记录

在 cuda 编程中,经常会用到 Nsight system 和 Nsight compute 进行性能分析等,下面做个学习总结。本篇包括安装和常用分析思路总结,具体实践操作总结会放在下一篇博客。

点云算法工程师 1万+

webpack4.x入门详解(二)

目录前言环境分离使用mode代码分离使用optimization.splitChunks分离使用动态导入分离懒加载缓存出口文件文件名提取类库模块标识符构建性能总结 前言 很高兴今天还有时间继续学习探讨webpack4.x,本文将接着上一篇的内容继续对webpack4.x深入研究,希望依旧可以和上一篇一样紧跟着敲一遍。 环境分离 开发环境(development)和生产环境(production)的构建目标差异很大。在开发环境中,我们需要具有强大的、具有实时重新加载(live reloading)或热模块替换

风舞红枫的个人博客 831

基于 MATLAB 的精馏塔模拟仿真

基于 MATLAB 的精馏塔模拟仿真精馏塔是一种重要的化工设备,其中乙烯精馏塔和醋酸乙烯精馏塔是常见的两种精馏塔。本文基于 MATLAB 软件,给出了针对这两种精馏塔的模拟仿真代码。

与其临渊羡鱼,不如退而结网 904

了解webpack

loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。当 webpack 处理应用程序时,它会在内部构建一个 依赖图(dependency graph),此依赖图对应映射到项目所需的每个模块,并生成一个或多个 bundle。不推荐在全局安装webpack,这样会使你项目的webpack锁定到某个版本里,并且在使用不同版本的webpack项目里面,可能会导致构建失败。因此推荐在本地的工作目录下安装webpack。

程序员柒的博客 1091

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

对webpack的了解

1. 对webpack的了解 **本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler),将项目当作一个整体,通过一个给定的的主文件,webpack将从这个文件开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包成一个或多个浏览器可识别的js文件 核心概念: • 入口(entry) 入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始 可以通过在 webpack 配置中配置 entr

AyayaOVO的博客 281

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

快速了解webpack

Webpack是一个现代的静态模块打包工具,它主要用于将多个模块打包成一个或多个静态资源文件。Webpack能够处理JavaScript、CSS、图片等各种类型的文件,并且支持代码拆分、模块加载、代码压缩等功能。

一步一个脚印,踏实努力,向着目标前进 1373

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

webpack深入浅出系列:入门(系统性了解webpack)

文章目录前言webpack是什么?为什么需要webpack?npm与webpack的关系?webpack的核心?webpack是如何运作的? 前言 最近常常反思,做前端仔也有些日子了,除了存款跟技术跟买的股票该涨的没涨之外;年龄、三脂这些倒是涨了不少。那我该怎么办?又没有马保国的武德,又不会卖燕窝;那只能勤加努力,把技术再往上提一提,起码要定位到高级工程师先。所以计划先把webpack这个前端家喻户晓的东西弄透彻一点。我跟你不一样,我要学的是真谛,直击灵魂的那一行代码。所以你跟我一样,请start me。

bigname22的博客 342

史上最全webpack带你深入了解webpack

史上最全webpack带你深入了解webpack

m0_62371650的博客 2472

了解webpack是什么

webpack的概述 webpack是一个现代的javascript应用程序的静态模块的打包器 那么webpack做了什么呢 1.语法的转换 less/sass转换成css Es6转换为Es5/Es3 typescript转换为js 2.html/css/js代码的压缩与合并(打包) 3.webpack可以在开发期间提供一个开发环境 自动开启浏览器 自动监视文件变化 自动刷新浏览器 4.项目一般都需要经过webpack打包之后才上线 webpack模块说明 1.webpack会把所有的资源当成模

weixin_48383564的博客 830

简单了解一下webpack

webpack打包工具 基本用法都在下面 const path=require("path")//这是用来输出path.resovle const HtmlWebpackPlugin=require("html-webpack-plugin")//用于把HTML页面放入内存 const minicss=require("mini-css-extract-plugin")//webpack4.0以后的打包css文件 const OptimizeCssAssetsWebpackPlugin=require("o

AI模型自研小参数,智能体开发,langchain,langgraph,垂直类模型开发,魔搭社区模型微调,人工智能软件全周期落地,从0到1开发小模型,多模态,多模型,多智能体,然后数据中台,模型中台,集群部署算力调度,并发优化模型 582

webpack基本了解

1.什么是webpack 基于现代js应用程序的静态模块打包工具 2.为什么学习webpack 常用的vuejs脚手架这些工具都是通过webpack进行封装,并且提供了单独的配置文件 3.webpack核心 重要的就4个 入口:entry webpack的入口是收集前端项目所有依赖的起点,实际上,他就是一个简单的js。 默认的入口就是src/index.js 也可以修改默认的入口,也可以有多个入口 出口:output 出口是指webpack生成js和静态文件的地方,为ebpack4开始默认输出文件是dist

qq_45656036的博客 202

webpack 了解

1. 首先, 我们来了解webpack 是什么东西了? WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式以供浏览器使用。 2. 我们为什么要使用webpack 了? 今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript...

weixin_30381317的博客 147

带你了解webpack

webpack作用: 是一个`静态模块打包工具,分析、压缩、打包`代码。 - 支持所有类型文件的打包 - 支持less/sass=>css - 支持ES6/7/8=>ES5(降级兼容性) - 压缩代码,提高加载速度 webpack安装 1. 初始化包环境`yarn init -y` 2. 安装依赖包`yarn add webpack webpack-cli -D`开发依赖 3. 配置script(自定义命令) 项目名不能有中文/大写/空格等特殊字符 文件夹不要和webpac

sky89299的博客 633

了解Webpack

webpack (http://webpack.github.io/)就是个前端打包工具,最主要功能如图: 1、打包,把多个文件打包成少数几个 2、转换,把.less .vue等浏览器不能渲染的文件打包成浏览器可以解析的.html,.css,.js 等,把模块转换成静态文件。 3、提升性能,前端功能模块越来越多,webpack可提升性能。 React中使用webpack: 1、web...

Junior 252
上一篇: 《高效程序员的45个习惯:敏捷开发修炼之道》了解一下
下一篇: 《代码大全》了解一下
go_sparrow
博客等级 码龄11年 25粉丝 257原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值