Day11-Webpack前端工程化开发

Webpack

一 webpack基本概念

遇到问题

开发中希望将文件分开来编写,比如CSS代码,可以分为头部尾部内容,公共的样式。

JS代码也希望拆分为多个文件,分别引入,以后代码比较好维护。

本地图片,希望可以实现小图片不用访问后端,保存在前端代码中就可以了

运行程序时我们希望你的文件越少越好,外部资源少了,减少对服务器访问次数。

比如JS我们希望项目只有一个,加载一次就可以。

CSS代码我们希望你项目只有一个,加载一次就可以

开发和最终运行代码产生了冲突?我们可以用Webpack解决这个冲突

概念

webpack是前端静态模块打包器,可以将我们错综复杂的文件,按照指定的规则打包成我们最终要部署的程序。

它主要有如下作用

  • 构建前端工程化的项目
  • 对源代码进行打包,得到最终要运行的代码

image-20230123181837608

webpack能够实现:

  • 将代码中所有JS依赖关系,打包后生成一个JS文件。最终引入到HTML代码中
  • 将所有的CSS依赖关系,打包生成一个CSS文件,最终引入HTML代码中
  • scss代码,可以直接编译生成css,以后写的scss代码,不用easy scss编译。
  • 图片打包。大图片正常的打包放在项目中,小图片通过base64编码的方式保存在代码中。

通过webpack打包后的项目 体积更小、文件变的更少

二 图片的base64编码

项目中的图片,可以是文件的形式存在,也可以是base64编码的方式存在

我们将一张图片转化为base64编码,浏览器能直接识别这个编码。

在线转码网站:https://base64.us/

如果图片不是../d链接,而是用base64编码,浏览器不会去服务器加载图片,而是直接解析代码。效率会更高。

base64编码适合于小图片,图片越大,base64编码解析结果越大,影响网页的性能

三webpack项目环境搭建

(1)创建一个项目,并初始化项目

npm init -y

(2)在项目中安装webpack工具

npm install webpack --save-dev
npm install webpack-cli --save-dev

webpack:webpack的核心文件

webpack-cli:webpack的脚手架工具,利用他可以实现项目打包

—save-dev代表开发环境依赖.webpack只有在开发过程中才会使用,项目打包后就不用了

(3)下载服务器插件

npm i webpack-dev-server --save-dev

webpack-dev-server:webpack内置了一个服务器,可以通过这个来启动项目

(4)安装合并js的插件

npm i webpack-merge --save-dev

(5)下载项目启动插件

npm i cross-env --save-dev

(6)下载html打包插件

npm i html-webpack-plugin -D

-D就表示 —save-dev的意思

(7)下载CSS打包插件

npm i mini-css-extract-plugin style-loader -D
npm install css-loader@5.2.6 -D

mini-css-extract-plugin:这个插件用于打包CSS的插件,以后如果遇到index.js中import引入了CSS代码,我们就会启动这个插件来处理代码。

css-loader:解析CSS源代码

style-loader:解析CSS样式代码

(8)下载SCSS打包插件

npm i sass-loader -D
npm i node-sass@4.14.1 --sass_binary_site=https://npm.taobao.org/mirrors/node-sass -D

node-sass这个包需要单独使用淘宝镜像下载

(9)下载图片打包插件

npm install url-loader file-loader html-withimg-loader -D

url-loader :打包检测文件路径

file-loader:打包图片文件

html-withimg-loader:针对html网页中img图片打包

css-loader版本需要降低为5.2.6,否定背景图片和img标签打包生成两个文件

(10) 下载静态文件打包插件

项目中有些文件不参与打包。不参与打包的文件在打包过程中,原封不动复制到打包后的代码中。

npm i copy-webpack-plugin -D

四 搭建Webpack项目结构

(1)创建webpack配置文件

开发环境 程序开发时的环境,代码提示友好,代码格式规范.报错信息明确
生产环境 线上运行的环境, 积小\代码压缩\减少输出,代码中不要console.log

我们可以在项目的根目录下面创建三个文件

image-20230227150958731

webpack.dev.config.js --->开发环境配置文件
webpack.prod.config.js --->生产环境的配置文件
webpack.base.config.js --->公共配置文件

开发环境和生产环境相同的代码,写在base文件中

开发环境自己特有配置dev这个文件

生产环境特有配置写在prod这个文件

(2)创建项目目录

前端工程化项目的标准目录结构

image-20230607144929944

五 webpack配置文件信息

webpack.base.config.js

const path = require("path")
const HtmlWebpackPlugin =  require("html-webpack-plugin")
const MiniCssExtractPlugin =  require("mini-css-extract-plugin")
const webpack = require("webpack")
const CopyWebp

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mongodb docker 及常用命令

MongoDB属于非关系型数据库,它是由C编写的分布式文档数据库。内部使用类似于Json的bson二进制格式。 中文手册 https://www.w3cschool.cn/mongodb/ 安装 https://www.mongodb.com/try/download/community 二进制安装可见另一篇: centos7 mongodb 4.0.28…

RabbitMQ 教程 | 第8章 跨越集群的界限

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

轻量化YOLOv5改进 | 结合repghost结构冲参数化网络,实现轻量化和加速推理,

RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization 论文总结本文改进repghost 核心代码测试参数量和计算量🔥🔥🔥 “引入RepGhostNet以加速CNN网络推理” “网络宽度的自定义调整:无缝嵌入YOLOv5” “通过结构重参数化优化网络性能” “实现高效和…

ChatGPT能否撰写科研论文?

ChatGPT,这款被许多人誉为语言处理领域的“黑马”,究竟能否应用于撰写科研论文?近期,以色列理工学院生物学家兼数据科学家Roy Kishony带领的团队,针对这一问题进行了系列研究,其结果已在《Nature》杂志上发…

【运维】在阿里云上搭建自己的图床,配合PicGo和Typora使用

本文将详细介绍如何在阿里云上搭建自己的图床,包括购买OSS服务、配置域名解析、创建OSS存储桶和设置图片上传规则等步骤。希望对您有所帮助! 一、购买OSS服务 首先,我们需要在阿里云官网购买OSS(Object Storage Service)服务。OSS是阿里云提…

springBoot多数据源使用tdengine(3.0.7.1)+MySQL+mybatisPlus+druid连接池

一、安装部署 1、我这里使用的 3.0.7.1版本,因为我看3.x版本已经发布了一年了,增加了很多新的功能,而且3.x官方推荐,对于2.x的版本,官网都已经推荐进行升级到3.x,所以考虑到项目以后的发展,决定…

django bootstrap html实现左右布局,带折叠按钮,左侧可折叠隐藏

一、实现的效果 在django项目中,需要使用bootstrap 实现一个左右分布的布局,左侧区域可以折叠隐藏起来,使得右侧的显示区域变大。(为了区分区域,左右加了配色,不好看的修改颜色即可) 点击折叠按钮,左侧区域隐藏,右侧区域铺满: 二、实现思路 1、使用col-md属性,让左…

SOC FPGA之流水灯设计

一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包,为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行,进入到破解器所在文…

【八】mybatis 日志模块设计

mybatis 日志模块设计 简介:闲来无事阅读一下mybatis的日志模块设计,学习一下优秀开源框架的设计思路,提升自己的编码能力 模块设计 在Mybatis内部定义了4个级别:Error:错误 、warn:警告、debug:调试、trance,日志优…

【计算机网络】应用层协议 -- DNS协议

文章目录 1. DNS背景2. 域名简介3. 域名解析过程4. 使用dig查看DNS过程 1. DNS背景 DNS(Domain Name System,域名系统)协议,是一个用来将域名转化为IP地址的应用层协议。 TCP/IP当中通过IP地址和端口号的方式,来确定…

C语言之结构体篇(简)

结构体 结构体的认知结构体的声明一般声明特殊声明匿名结构体类型 结构体自引用结构体变量的定义与初始化结构体变量的定义结构体变量的初始化 结构体传参结构体内存对齐位段位段声明位段的内存分配位段跨平台问题: 结构体是由我们自己创造的一种类型,使得C语言有能…

js-匈牙利算法

匈牙利算法 素数伴侣新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的K…

H5打包封装小程序系统开发

H5打包封装小程序系统开发 H5打包封装小程序系统开发是指将H5页面打包封装成小程序的开发过程。下面是一个简单的步骤: 准备工作:首先,需要准备好H5页面的代码和资源文件。确保H5页面在浏览器中正常运行,并且没有依赖于浏览器特…

『赠书活动 | 第十六期』《深入浅出Java虚拟机:JVM原理与实战》

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 『赠书活动 | 第十六期』 本期书籍:《深入浅出Java虚拟机:JVM原理与实战》 赠书规则:评论区:点赞&#xff…

将Visio和Excel导出成没有白边的PDF文件

1、VISIO如何无白边导出pdf格式 在使用Latex时,要导入矢量图eps格式。但是VISIO无法输出eps格式,这就需要将其导出为pdf。但是导出pdf时,往往会有大量的白边。VISIO无白边导出pdf格式的方法如下: 1.文件——开发工具——显示sha…

并发 如何创建线程 多线程

进程:一个程序的执行过程 线程:一个方法就是一个线程 并发:多个线程抢夺一个资源 操作同一个对象 创建线程方法1 //创建线程方法1 继承Thread类 重写润方法 调用start开启线程 public class TestThead extends Thread{Overridepublic voi…

redis 高级篇 redis 源码的读取分析

一 redis源码分析 1.1 源码分析 1每一个kv键值对应有一个dictEntry。 2.底层数据结构

景联文科技高质量成品数据集上新啦!

景联文科技近期上新多个成品数据集,包含图像、视频等多种类型的数据,涵盖丰富的场景,可满足不同模型的多元化需求。 高质量成品数据集可用于训练和优化模型,使得模型能够更加全面和精准地理解和处理任务,更好地应对复…

eclipse was unable to locate its companion shared library

当转移或者Copy工程时, eclipse was unable to locate its companion shared library eclipse.ini 里面的路径配置错误导致 --launcher.library C:/Users/**/.p2/pool/plugins/org.eclipse.equinox. launcher.win32.win32.x86_64_1.2.700.v20221108-1024 -product …

17. Spring 事务

目录 1. 事务定义 2. MySQL 中的事务使用 3. 没有事务时的插入 4. Spring 编程式事务 5. Spring 声明式事务 5.1 Transactional 作用范围 5.2 Transactional 参数说明 5.3 Transactional 工作原理 1. 事务定义 将⼀组操作封装成一个执行单元(封装到一起…