当前位置: 首页 > news >正文

一、webpack基础

webpack基础

一、webpack是什么

webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。

说白了webpack就是一个构建和管理静态资源的工具,在我们使用框架开发时,它会在我们内部的一个或者多个入口根据我们引入的各个模块将他们根据一定的规则都处理成一个个的静态资源文件,从而方便我们进行引入使用。

依赖图如下:
在这里插入图片描述

二、webpack优缺点

优点:

  • 模块化开发。在webpack中所有的资源都可以模块化(js, css, image等),可以更方便的管理,迁移和开发。
  • 语法编译。可以很方便的将浏览器不支持的语法(es6, jsx等等)借助其他loader进行按需编译,预处理等。
  • 社区完善。扩展能力强,有丰富的插件并且支持自己编写插件和loader。
  • 项目优化。因为有了上述这些有点和功能所以它可以更好的支持我们对项目进行优化(动态打包、代码分离、按需加载、代码压缩、静态资源压缩、缓存配置等)。

缺点:

  • 配置繁琐。
  • 项目复杂时打包较慢。
  • 对服务端渲染不友好

三、webpack基础概念

1、模式(mode)

mode可以设置webpack在构建时的模式 生产模式和开发模式,当选择模式后,webpack自身会根据自动开启一写内置的功能。

默认值为 production。

如:

module.exports = {mode: 'production',
};

2、入口(entry)

entry设置webpack从哪个文件开始进行打包,并收集依赖项。

可以设置多个入口。

如:

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

3、出口(output)

output告诉webpack在哪里输出打包好的文件,以什么样的方式命名这些输出的文件等。

默认值是 ./dist/main.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',},
};

4、loader

webpack 本身只能理解 JavaScript 和 JSON 文件,但是项目中还会遇到其他的文件(如css, less等)这个时候就需要使用loader去处理这些文件,并将他们输出为可以使用的资源。

它有两个属性:

  • test: 匹配哪些要处理的文件。
  • use: 在处理文件时应该使用哪些loader。

如:

const path = require('path');module.exports = {module: {rules: [{ test: /\.txt$/, use: 'raw-loader' }],},
};

5、插件(plugin)

loader用于解析和处理文件,plugin则是为了扩展webpack的能力,可以进行 打包优化、资源管理、注入环境变量等等。

如:

const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack'); module.exports = {plugins: [new HtmlWebpackPlugin({ template: './src/index.html' })],
};

6、解析(Resolve)

resolve用来对webpack设置文件扩展名、目录别名等等。

如:

module.exports = {resolve: {extensions: ['.js', '.jsx', '.json']},
};

7、优化(Optimization)

optimization用来设置webpack的内置优化性能优化,如代码分割、代码压缩等。

如:

module.exports = {optimization: {splitChunks: { },minimizer: [ ],},
};

四、总结

webpack本质上是一个静态资源模块打包工具,我们自己指定需要打包文件的入口,并且设置一定的规则,然后它就会从入口文件开始根据引入的依赖项将所有的资源构建出一个依赖图,在根据设置规则输出处理后的静态资源文件输出到我们指定的目录里面。

但是它本身只能解析js和json文件,我们在处理其他文件时需要手动的去设置去引入其他的插件才能完成我们想要的处理结果。

相关文章:

一、webpack基础

webpack基础 一、webpack是什么 webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。 说白了webpack就是一个构建和管理静态资源的工具,在我们使用框架开发时,它会在我们内部的一个或者多个入口根据我们引入的各个模块将他们根据一定的规…...

超详细VMware CentOS7(最小安装)安装教程

前言:在我们使用虚拟机的时候,不要去担心我们的一些操作会使虚拟机损坏或者有没有可能会使我们的电脑本身出现一些问题,要记住无论我们把我们的虚拟机如何都不会影响我们本身的机器,因为它只是虚拟的,在虚拟机里不要担…...

经典卷积模型回顾8—NIN实现图像分类(matlab)

首先,介绍一下NiN(Network In Network)模型。NiN模型是由加州大学伯克利分校的Lin、Chen、Yan等人在2013年提出的一种深度卷积神经网络模型,其特点是在传统的卷积神经网络中加入了多个小的全连接网络,用于对特征进行非…...

【Java笔记】泛型

本章专题与脉络 泛型概述 生活中的例子 举例1:中药店,每个抽屉外面贴着标签 举例2:超市购物架上很多瓶子,每个瓶子装的是什么,有标签 举例3:家庭厨房中: Java中的泛型,就类似于上…...

【Linux】用户管理

😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享C/C相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...

深入理解Mysql索引底层数据结构与算法

索引是帮助MySQL高效获取数据的排好序的数据结构 深入理解Mysql索引底层数据结构与算法1.常见的数据结构讲解1.1 二叉树1.1.1 二叉树的定义1.1.2 二叉树示例1.1.3 Mysql为什么不使用二叉树进行数据存储1.2 红黑树1.2.1 红黑树的定义1.2.2 红黑树示例1.2.3 Mysql 为什么不适用红…...

【SpringBoot高级篇】SpringBoot集成jasypt 配置脱敏和数据脱敏

【SpringBoot高级篇】SpringBoot集成jasypt数据脱敏配置脱敏使用场景配置脱敏实践数据脱敏pomymlEncryptMethodEncryptFieldEncryptConstantEncryptHandlerPersonJasyptApplication配置脱敏 使用场景 数据库密码直接明文写在application.yml配置中,对安全来说&…...

JAVA知识体系(二)

分布式: 微服务之间的通信 当前我们微服务架构中,微服务之间使用的三种通讯方式:代理访问,feign请求,消息队列 其中代理访问我们使用的是netflix-zuul,只要是对外暴露请求的所有网关,主要用在…...

Verilog 学习第八节(数码管段码显示)

共阴极数码管:低电平端接的都是0,高电平端哪里设置为1 ,哪里就亮~ 共阳极数码管与之相反~ 视觉暂留: 对于三位的共阴极数码管 第0.01s:让数码管0的a段亮,其他数码管全灭 Sel0为高电平,sel1和sel…...

方案开发|快递吊钩电子秤方案

物流的发展为我们提供了生活的便利,足不出户仍可以感受天南地北的美食的特产,在现在这个时代已经是现实并发展成为常态的事情了。在物流发展的每一个环节中,吊钩电子秤也是它必不可缺的一环。人们在寄出物品前需要通过吊钩电子秤称量过重量&a…...

Spring-IOC容器初始化过程

Spring IOC容器的初始化过程:Resource定位,BeanDefinition载入,向IOC容器注册BeanDefinition。整个过程由refresh()方法触发,三个过程由不同的模块完成,使用户更加灵活的对这三个过程剪裁和扩展。 BeanDefinition 就是POJO对象在IOC容器中的抽象。通过BeanDefinition 这个…...

AspCms标签手册

网站通用标签{aspcms:sitepath} 网站终极目录(可放在二级目录,其它语言则在三级目录){aspcms:languagepath} 语言目录{aspcms:siteurl} 网站地址{aspcms:sitelogo} LOGO地址{aspcms:sitetitle} 网站标题{aspcms:additiontitle} 网站附加标题{aspcms:sitekeywords} 网站关键词{a…...

什么是Netty

一.Netty介绍 1.什么是netty Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算…...

SpringCloud:统一网关Gateway

目录 1、网关介绍 2、搭建网关服务 3、路由断言工厂 4、路由过滤器 5、全局过滤器GlobalFilter 6、过滤器执行顺序 7、跨域问题处理 1、网关介绍 网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是复杂的网络互 连设备&#xff0…...

【独家】华为OD机试 - 最差产品奖(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

​力扣解法汇总1599. 经营摩天轮的最大利润

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱…...

MySQL-常见的五种索引

什么是索引? 百度百科:在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于…...

Linux学习第二十三节-压缩和解压缩和tar打包工具

1.压缩与解压缩(不常用)①Linux独有压缩格式及命令工具: gzip---> .gz bzip2---> .bz2 xz---> .xz②压缩命令格式: 压缩命令:gzip [选项] 文件名 常用选项:-d 解压缩 压缩命令:bzip2 [选项] 文件名…...

没有钱怎么创业?一分钱没有如何能创业成功?

限制人创业成功的从来都不是资金,而是能力,这个道理很多人都可能不懂,多数人习惯了庸庸碌碌、日复一日地打工行为,却不知如何创业,那么,没有钱怎么创业?一分钱没有如何能创业成功呢?…...

【操作系统原理实验】银行家算法模拟实现

选择一种高级语言如C/C等,编写一个银行家算法的模拟实现程序。1) 设计相关数据结构;2) 实现系统资源状态查看、资源请求的输入等模块;3) 实现资源的预分配及确认或回滚程序;4) 实现系统状态安全检查程序;5) 组装各模块…...

java医院云HIS系统:融合B/S版电子病历系统 能与公卫、PACS等各类外部系统融合

医院HIS系统源码 云HIS系统源码:SaaS运维平台完整文档 有源码,有演示 java基层医院云his系统 融合B/S版电子病历系统,支持电子病历4级 拥有自主知识产权。 看演示及源码可私信我哦! 一、系统概述 一款满足二甲医院、基层医疗机构…...

单线激光雷达(SICK)驱动安装及时空标定

一、引言 1、AGV需要同时具备定位、避障与导航的功能,其中避障对于雷达本身的分辨率、精度要求并不是很高,只需要能够根据预设定的雷达扫描范围准确避开障碍物即可,故本文以TIM240(SICK激光类雷达)为例介绍实现多雷达…...

Java IO流

Java IO流 文章目录Java IO流什么是IO流InputStreamFlieInputStream示例OutputStream示例字符的读取与写入READER方法WRITER方法利用Scanner和PrintWriter简化字符的读写ScannerPrintWriter什么是IO流 前面我们介绍了Java中对文件的操作以及file类的了解,但是file类…...

LeetCode - 1653 使字符串平衡的最少删除次数

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 1653. 使字符串平衡的最少删除次数 - 力扣(LeetCode) 题目描述 给你一个字符串 s ,它仅包含字符 a 和 b​​​​ 。 你可以删除 s 中任意数目的字符,使得 …...

【微信小程序】-- 页面事件 - 上拉触底 - 案例(二十七)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

《超导电子技术及其应用》学习日志(二)

约瑟夫森效应 约瑟夫森理论 约瑟夫森方程 (1)每一个库柏对都可视为质量为2m、电量为2e的复合载流子,定向运动速度v就是库柏相对质心的速度。处于超导态的库柏对凝聚于同一量子态,运载电流时具有完全相同的动量P。用微观波函数来…...

微信小程序this指向问题

前言 最近在开发微信小程序时不时会遇到一个很奇怪的问题,有些情况下用 this.setData 可以改变视图显示,有些情况下使用 this.setData 无效,这又是为什么呢? 问题描述 在解释这个问题前,我们先来看两段代码&#xff1…...

【报错】paddle相关报错和处理方法

1 报错 😱😱😱 ModuleNotFoundError: No module named paddle 2 解决方法 💉💉💉 pip --default-timeout=100 install paddlepaddle -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 🎉🎉🎉🎉🎉🎉 1 报错 😱😱😱 from paddl…...

unity的安装配置和第一个游戏-unity开学第一课

许多的小伙伴学编程语言其实是因为玩游戏,玩着玩着就想写游戏了,于是开始学习c学习C#学习java,但相比之下C#的操作会更加容易,所以就开始学习unity来编游戏了。这里就就算是unity开学第一课啦-unity的安装配置和第一个游戏。 文章…...

Elsevier上传LaTeX 修改稿踩坑

背景 千辛万苦修改完论文,结果发现要求上传可编辑文件,tex上传真的太难了,一堆坑,尤其是编译错误,要等系统创建pdf后才能找到。中间还打了北京的客服电话,结果他们那边并不懂相关的东西。说latex是第三方公…...

游戏网站app/石家庄网站建设方案推广

解决方法如下: 1>、进入超级用户模式。也就是输入"su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式。 2>、添加文件的写权限。也就是输入命令"chmod uw /etc/sudoers"。 3>、编辑/etc/sudoers文件…...

苏州保洁公司排行榜/宁波正规优化seo价格

DB2修改表操作相信大家都不陌生,下文对DB2修改表方面结合了一些例子进行了详细的分析讨论,供您参考学习。 DB2修改表使用ALTER TABLE语句来更改列属性,例如可空性、LOB选项、作用域、约束、压缩属性以及数据类型等等。 例如,在命令…...

想给公司做个网站/网站设计培训

本文内容:1.僵尸进程,孤儿进程的定义,区别,产生原因,处理方法2.wait函数,waitpid函数的分析,以及比较背景:由于子进程的结束和父进程的运行是一个异步的过程,即父进程永远…...

wordpress forbidden/seo搜索优化公司

1 开发工具1.1 独立开发环境PL—>VivadoPS(ARM)-->SDK(Xilinx)或者第三方ARM开发工具1.2 集成开发环境SDSoC1.3 总结 独立开发环境大概分为四个步骤:(1&#xff09…...

wordpress 插件 浮动小人/企业培训机构

一:重启xenserver,待启动界面进入到boot时,键入menu.c32二:待出现以下界面是,在5秒内按下tab键:三:按下tab建后,出现启动参数,然后加入single参数:回车&#…...

游戏网官网/怎样进行seo优化

无线网络发射器选址 题目描述 Description随着智能手机的日益普及,人们对无线网的需求日益增大。某城市决定对城市内的公共场所覆盖无线网。 假设该城市的布局为由严格平行的 129 条东西向街道和 129 条南北向街道所形成的网格状,并且相邻的平行街道之间…...