webpack5(一)

什么是webpack

webpack是一个静态资源打包工具,它会以一个或者多个文件作为打包的入口,将整个项目的所有文件编译组合成一个或多个文件输出出去。输出的文件就是编译好的文件,可以在浏览器端运行。一般将 webpack 输出的文件称为 bandle 。

webpack 本身的功能也是有限的,一共有两种模式:

开发模式:仅能编译js中 ES Module 语法。
生产模式:可以编译js中 ES Module 语法,还可以压缩 js 代码。
 

为什么需要打包工具

开发时,一般会使用框架、ES6模块化语法、css预处理器等语法进行开发,这样的代码如果想在浏览器运行必须经过编译,成为浏览器能识别的 js、css 等语法后才能运行。
打包工具就是用来编译代码的。同时还可以压缩代码、做兼容性处理、提升代码性能等。

目前一些常用的打包工具:

Grunt、Gulp、Parcel、Webpack、Vite 等等。

npm 和  npx

npm是用来下载包的

npx 是将node_modules文件夹中的 .bin 目录临时添加为环境变量,这样就可以访问该环境变量下的应用程序

npx的作用如下:

1.默认情况下,首先检查路径中是否存在要执行的包(即在项目中);

2.如果存在,它将执行;

3.若不存在,意味着尚未安装该软件包,npx将安装其最新版本,然后执行它;

假设有一个名为my-package的软件包,想要执行它。

好吧,若没有npx,要执行一个软件包,必须通过其本地路径运行来完成,如下所示:

./node_modules/bin/my-package

或在 package.json文件的 scripts section中将其定义为单独的脚本,如下所示:

{"name":"something","version": "1.0.0","scripts": {"my-package":"./node_modules/bin/my-package"}
}

然后使用npm run my-package运行。

现在,运用npx,只需运行npx my-package.,即可轻松实现此目的。

webpack的配置有哪些?核心概念?

webpack有5大核心概念:

1. entry(入口)指示Webpack从哪个文件开始打包。
2. output(输出)指示Webpack打包完的文件输出到哪里,如何命名等。
3. loader(加载器)webpack本身只能处理 js、json等资源,其他资源需要借助 loader 才能解析。
4. plugins(插件)扩展webpack的功能。
5. mode(模式)开发和生产两种模式 development/production。

⚠️注意:output 中的 path 是全部文件的输出路径;但 filename指的只是入口文件输出后的路径。
clean:true,设置打包前清空

webpack.config.js 文件:

const path = require("path") //固定写法 node中的核心模块,专门用来处理路径问题//依赖于node中的common.js模块化
module.exports = {//入口entry:'./src/main.js',//相对路径//出口 文件的输出路径 一个对象 包含路径和文件名output:{// __dirname node.js中的变量 用来表示当前文件的文件夹目录path:path.resolve(__dirname,'dist'),//绝对路径filename:'main.js',clean:true,//自动清空上次打包的内容,其实就是在打包前,将整个path目录进行清空,再打包},//loader 加载器module:{rules:[//loader的配置],},//plugin 插件plugins:[//plugin的配置],//模式mode:'development'//或 production
}

 什么是开发模式

如何处理样式资源 

如果需要webpack进行打包,那么必须在入口文件进行引入。

css/less/sass/stylus 都有自己对应的loader,不同的是,如果使用预处理器,预处理器的loader会先将预处理器处理为css文件,然后再继续执行,即将css代码编译成commonjs模块放入js,再将js中的css文件通过创建style标签的方式加入到html中。

1.npm install 需要下载的loader
2.配置方式/内联方式(不推荐)

在webpack.config.js中进行配置:

module.exports = {module: {rules: [{ test: /\.css$/, //只检测.css文件//执行顺序为从右到左,从下至上use: ['style-loader',//将js中css文件通过创建style标签添加到html中生效'css-loader'//将css代码编译为common.js模块放到js中]},],},
};

3.将需要打包的资源在入口文件引入。

如何进行图片和字体图标处理

webpack4 中通过 file-loader 和 url-loader 进行图片资源的处理,但是在 webpack5 中,已经将两个 loader 内置到 webpack 中了,只需要简单配置。

项目中的图片优化:
习惯将小于10kb的图片转换为base64(DataUri),减少请求,减轻服务器压力。
对于过大的图片,不适合转为base64,因为转为base64文件体积会变大,越大的图片增加的体积越大,导致整体页面的加载速度变慢。

module.exports = {module: {rules: [{ test: /\.(png|jpg|gif)$/, //需要查看的图片后缀type:"asset",parser:{dataUrlCondition:{//小于10kb的图片转换为base64maxSize:10*1024,//10kb},],},
};

处理字体图标资源

此时不需要进行 base64 的转换,type 类型也是 asset 下的 resource

module.exports = {module: {rules: [{ test: /\.(ttf|woff2?)$/, //需要查看的图片后缀type:"asset/resource",//也是可以设置generator的值generator:{filename:"static/media/[hash]/[ext]/[query]",}],},
};

怎样操作输出文件的打包目录

当我们希望打包出来的文件不是全部堆砌在.dist目录下,希望进行 js/image 的分级目录时:

output中更改 js 输出后的文件路径:

output:{path:path.resolve(__dirname,'dist'),//绝对路径filename:'static/js/main.js',},

module下 rule 中和 asset 同级定义generator

module: {rules: [{ test: /\.(png|jpg|gif)$/, //需要查看的图片后缀type:"asset",parser:{dataUrlCondition:{//小于10kb的图片转换为base64maxSize:10*1024,//10kb},generator:{//输出的图片名称//hash指的是打包完成后,图片会被打包为一串字母数字,此值即为hash值,//hash值如果觉得太长可以设置为[hash:10],为只取前十位//ext 指的是文件后缀名filename:"static/image/[hash]/[ext]/[query]",}],},

此时,.dist目录下会有一个static文件夹,static文件夹下有两个文件夹,js文件夹下是打包好的入口文件,image文件夹下是打包好的图片资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/57271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将Spring boot 项目部署到tomcat服务艰难

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z X Y Z

芯科科技推出专为Amazon Sidewalk优化的全新片上系统和开发工具,加速Sidewalk网络采用

芯科科技为Sidewalk开发提供专家级支持 中国,北京 - 2023年8月22日 – 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)今日在其一年一度的第四…

Flutter 逆向安全

前言: 前几天在 "学习" 一个项目, 发现是用 Flutter 开发的。之前研究过 flutter 的逆向,早期 Flutter 有工具可以通过快照进行反编译:《对照表如下》 新的版本开发者没有维护了。 目前没有很好的工具 可以对 Flutter 进…

软件工程(十八) 行为型设计模式(四)

1、状态模式 简要说明 允许一个对象在其内部改变时改变它的行为 速记关键字 状态变成类 类图如下 状态模式主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。比如订单从待付款到待收货的咋黄台发生变化,执行的逻辑是不一样的。 所以我们将状态抽象为一…

17.CSS发光按钮悬停特效

效果 源码 <!DOCTYPE html> <html> <head><title>CSS Modern Button</title><link rel="stylesheet" type="text/css" href="style.css"> </head> <body><a href="#" style=&quo…

手机无人直播软件有哪些,又有哪些优势?

如今&#xff0c;随着智能手机的普及和移动互联网的发展&#xff0c;手机无人直播成为了一个炙手可热的领域。手机无人直播软件为用户提供了便捷、灵活的直播方式&#xff0c;让更多商家人能够实现自己的直播带货的梦想。接下来&#xff0c;我们将探讨手机无人直播软件有哪些&a…

React 全栈体系(三)

第二章 React面向组件编程 四、组件三大核心属性3: refs与事件处理 1. 效果 需求: 自定义组件, 功能说明如下: 点击按钮, 提示第一个输入框中的值当第2个输入框失去焦点时, 提示这个输入框中的值 2. 理解 组件内的标签可以定义ref属性来标识自己 3. 编码 3.1 字符串形式…

图文并茂:Python Tkinter从入门到高级实战全解析

目录 介绍什么是Tkinter&#xff1f;准备工作第一个Tkinter程序界面布局事件处理补充知识点 文本输入框复选框和单选框列表框弹出对话框 综合案例&#xff1a;待办事项列表总结 介绍 欢迎来到本篇文章&#xff0c;我们将带您深入了解如何在Python中使用Tkinter库来创建图形用…

电脑不安装软件,怎么将手机文件传输到电脑?

很多人都知道&#xff0c;AirDroid有网页版&#xff08;web.airdroid.com&#xff09;。 想要文件传输&#xff0c;却不想在电脑安装软件时&#xff0c;AirDroid的网页版其实也可以传输文件。 然而&#xff0c;要将文件从手机传输文件到网页端所在的电脑时&#xff0c;如果按…

服务器安全-修改默认ssh端口

防火墙先打开指定端口,要不修改后连不上(端口需要在65535之内) firewall-cmd --list-ports firewall-cmd --add-port54111/tcp --permanent firewall-cmd --reload-------------------- 先让两个端口同时存在,等配置成功后关闭22端口 vim /etc/ssh/sshd_config重启sshd service…

关于亚马逊云科技云技能孵化营学习心得

1、活动介绍 本活动主要是面向想要全面了解亚马逊云科技 (Amazon Web Services) 云的个人&#xff0c;而不受特定技术角色的限制。内容包括亚马逊云科技云概念、亚马逊云科技服务、安全性、架构、定价和支持等等&#xff0c;此外还可以参加亚马逊的认证考试。 2、学习过程 该…

复数的四则运算(java版)

复数的四则运算&#xff08;java版&#xff09; 目录 复数的四则运算&#xff08;java版&#xff09;介绍复数的四则运算实现思路代码1、封装复数类2、测试复数类3、代码测试结果 介绍 复数&#xff0c;为实数的延伸&#xff0c;它使任一多项式方程都有根。复数当中有个“虚数单…

【Go 基础篇】探索Go语言中Map的神奇操作

嗨&#xff0c;Go语言的学习者们&#xff01;在编程世界中&#xff0c;Map是一个强大而又有趣的工具&#xff0c;它可以帮助我们高效地存储和操作键值对数据。Map就像是一本字典&#xff0c;可以让我们根据关键字&#xff08;键&#xff09;快速找到对应的信息&#xff08;值&a…

视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

PHP环境配置

1.服务器 简单理解&#xff1a;服务器也是一台计算机&#xff0c;只是比平时用到的计算机在性能上更强大&#xff0c;开发中通常都需要将开发好的项目部署到服务器进行访问&#xff0c;例如&#xff1a;我们可以访问百度、淘宝、京东等&#xff0c;都是因为有服务器的存在&…

Jackpack - Hilt

一、概念 类中使用的某个对象不是在这个类中实例化的&#xff08;如Activity无法手动实例化使用&#xff09;&#xff0c;而是通过外部注入&#xff08;从外部传入对象后使用&#xff09;&#xff0c;这种实现方式就称为依赖注入 Dependency Injection&#xff08;简称DI&#…

公网远程访问局域网SQL Server数据库

文章目录 1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据库的重要性相信大家都有所了解&…

XML—DTD、 Schema

目录 DTD是什么&#xff1f; DTD有什么用途&#xff1f; DTD与XML有什么联系&#xff1f; DTD原理图 外部DTD DTD文件book.dtd: 使用外部DTD文件的XML文件 PCDATA XML 文档构建模块 一、元素 1、元素声明 ①、有元素&#xff1a; ②、空元素&#xff1a; ③、ANY…

【LeetCode-中等题】24. 两两交换链表中的节点

文章目录 题目方法一&#xff1a;递归方法二&#xff1a;三指针迭代 题目 方法一&#xff1a;递归 图解&#xff1a; 详细版 public ListNode swapPairs(ListNode head) {/*递归法:宗旨就是紧紧抓住原来的函数究竟返回的是什么?作用是什么即可其余的细枝末节不要细究,编译器…

Windows上安装Hadoop 3.x

目录 0. 安装Java 1. 安装Hadoop 1.1 下载Hadoop 1.2 下载winutils 2. 配置Hadoop 1. hadoop-env.cmd 2. 创建数据目录 3. core-site.xml 4. hdfs-site.xml 3. 启动测试 3.1 namenode格式化 3.2 启动Hadoop 3.3 查看webui 3.4 测试hdfs 3.5. 测试MapReduce 4. 还…