Day11-Webpack前端工程化开发

news2025/1/16 1:53:41

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

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

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

相关文章

火山引擎DataLeap的Data Catalog系统搜索实践 (上)

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 摘要 火山引擎大数据研发治理套件 DataLeap的Data Catalog系统通过汇总和组织各种元数据,解决了数据生产者梳理数据、数据消费者找数和理解数的业务场景…

生产事故-记一次特殊的OOM排查

0x01 事故背景 2023年3月10日14时19分,C公司开发人员向A公司开发人员反映某开放接口从2023年3月10日14时许开始无法访问和使用。该系统为某基础数据接口服务,基于 HTTP 协议进行通信。按照惯例,首先排查网络是否异常,经运维人员检…

【NX】NX开发入门练习寻找倒圆角设置颜色和添加属性

实现功能如标题,当时学习nx开发用的练习题,用的是nx8.5的32位版本,对于设置属性,一种是可以在界面中查看的属性,一种是隐藏的不能再界面中查看的自定义属性(但是可以正常读取)。 下面是完整代码…

Netty:ByteBuf的引用计数

说明 Netty的ByteBuf有一个对它本身的引用计数。 可以通过ByteBuf的retain()增加1个引用计数,通过retain(int increment)增加一定数量的引用计数。 通过release()减少1个引用计数,通过release(int decrement)减少一定数量的引用计数。 通过refCnt()查看…

科普 | 以太坊坎昆升级是什么

坎昆升级是什么 坎昆,是墨西哥一个著名的旅游城市,也是 Devcon 3 大会的举办地,按照以太坊升级命名的规律,以地名命名的升级,是针对以太坊执行层的升级。 之前同样命名的还有柏林升级、伦敦升级和这次的上海升级等。…

webapi部署几个错误

第一个错误:无法读取配置节“system.serviceModel”,因为它缺少节声明 发现服务器上没有安装.net Framework 3.5.1 第二个错误:未能从程序集“SYSTEM.SERVICEMODEL, VERSION3.0.0.0 先安装.net framework 4.0再安装 3.5 就会出现这个问题…

8.3线程状态

new: 调用start()方法之前的状态. blocked: 因为锁而阻塞. waiting: 因为调用wait()方法而阻塞. timed_waiting: 因为调用sleep()方法而阻塞. terminated: run()方法执行完毕之后线程的状态.

opencv-33 图像平滑处理-中值滤波cv2.medianBlur()

中值滤波是一种常见的图像处理滤波技术,用于去除图像中的噪声。它的原理是用一个滑动窗口(也称为卷积核)在图像上移动,对窗口中的像素值进行排序,然后用窗口中像素值的中值来替换中心像素的值。这样,中值滤…

【Valgrind】Valgrind安装(ubuntu系统)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

SonarQube入门 - 搭建本地环境

一、SonarQube是什么? SonarQube是一种自我管理的自动代码审查工具,可以系统地帮助您交付干净的代码。作为我们Sonar 解决方案的核心元素 ,SonarQube 集成到您现有的工作流程中并检测代码中的问题,以帮助您对项目执行持续的代码检…

GD32F103VE点灯

GD32F103VE点灯主要用来学习端口引脚的输出配置。它由LED.c,LED.h,SoftDelay.c和main.c组成。 #include "gd32f10x.h" //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t #include "SoftDelay.h"#include …

企业微信小程序在调用wx.qy.login时返回错误信息qy.login:fail

原因是大概是绑定了多个企业但是在开发者工具中没有选择正确的企业 解决方法: 重新选择企业后即可成功获取code

BS框架说明

B/S架构 1.B/S框架,意思是前端(Browser 浏览器,小程序、app、自己写的)和服务器端(Server)组成的系统的框架结构 2.B/S框架,也可理解为web架构,包含前端、后端、数据库三大组成部分…

考研/面试 数据结构大题必会代码(理解+记忆,实现使用C++,STL库)

文章目录 一. 线性表1. 逆置顺序表所有元素2. 删除线性链表中数据域为 item 的所有结点3. 逆转线性链表(递归(快速解题)非递归)4. 复制线性链表(递归)5. 将两个按值有序排列的非空线性链表合并为一个按值有序的线性链表 二. 树1. 建立二叉树(…

【快应用】同时传递事件对象和自定义参数 ,无法正确接收事件对象

【关键词】 事件绑定、自定义参数、事件对象 【问题背景】 在快应用中采用如下方式绑定组件的事件方法&#xff0c;同时传递事件对象和自定义参数&#xff0c;发现回调方法中没有正确接收到事件对象。 问题代码如下&#xff1a; <template><!-- Only one root nod…

2023年信息系统项目管理师-粗略了解整体主要知识脉络

1. 五大过程组 2.十大知识领域 3. 十大知识领域与五大过程组的关系 4. 十大知识领域的关系图

Meta 烧掉百亿豪赌的未来:元宇宙,还有出路吗?

社交平台的下一步是什么&#xff1f; 2021年10月&#xff0c;Facebook联合创始人兼CEO马克扎克伯格在年度 Connect 开发者大会上正式宣布&#xff0c;Facebook公司将更名为Meta。这一举动标志着扎克伯格决心将公司转型为一家“元宇宙公司”&#xff0c;全力投入到元宇宙的技术…

【物联网】DMA传输原理与实现详解(超详细)

DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09;是一种计算机数据传输方式&#xff0c;允许外围设备直接访问系统内存&#xff0c;而无需CPU的干预。 文章目录 Part 1: DMA的工作原理配置阶段&#xff1a;数据传输阶段&#xff1a; Part 2: DMA数据…

java读写properties文件和xml文件,解决中文乱码问题

文章目录 前言一、properties文件1.1properties格式介绍1.2读取项目resource/templates下面properties并处理中文乱码问题1.3读取本地properties并处理中文乱码问题1.4修改properties文件 二、XML文件2.1xml文件格式2.2读取xml文件2.3写xml文件 前言 在开发当中我们经常需要用…

【NX】NX二次开发中拉伸曲线完整范例

之前做项目测试用到的代码&#xff0c;开发的版本是NX8.5的32位版本&#xff0c;这个代码实现起来也不难&#xff0c;其实就是调用了UG的API而已。 那么我在这里提供完整的代码&#xff1a; //author&#xff1a;autumoon //邮箱&#xff1a;9506163.com //日期&#xff1a;20…