Weback使用详情

news/2025/2/22 16:23:40/

webpack五个核心概念

  1. 入口(entry):入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。

  1. 出口(output):output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。

  1. loader:loader 让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。

  1. 插件(plugins):loader 被用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。插件接口功能极其强大,可以用来处理各种各样的任务

  1. 模式:通过选择 development 或 production 之中的一个,来设置 mode 参数,你可以启用相应模式下的 webpack 内置的优化

使用流程

1.初始化项目

初始化项目,生成package.json文件

npm init

使用 npm init 初始化一个项目,并安装webpack

2.安装 webpack 需要的包

 npm install --save-dev webpack-cli  webpacknpm i webpack webpack-cli -g // 全局安装或npm i webpack webpack-cli -D //写入到package.json的开发依赖中

3.创建配置文件

webpack.config.js(不能改)

"webpack": "webpack --config webpack.config.js"

单入口

多入口

4.编译并测试

npm run webpack

打包样式资源(loader)

webpack无法处理样式资源,如果要处理,需要引入loader,写loader我们需要先写一下webpack的配置文件,配置一下webpack 作用就是指挥webpack怎么干活,干哪些活。

以打包css文件为例

我们这里用到了css-loader和style-loader两个包,所以需要下载这两个包

 npm i css‐loader style‐loader ‐D

在根目录下创建webpack.config.js

//resolve用来拼接绝对路径的方法
const {resolve} =require("path")
module.exports={//入口,指示webpack从哪个文件打包entry:"./src/index.js",output:{//打包好之后的文件名filename:"bundle.js",//__dirname是node的一个变量,代表当前文件的目录的绝对路径path:resolve(__dirname,"dist")},//loader的配置module:{rules:[{//匹配哪些文件test:/\.css$/,//使用哪些loader进行处理use:[//创建一个标签,将js中的css样式资源插入进去,添加到页面中的head中生效'style‐loader',//将css文件以字符串的形式变成common.js的模块加载到js中,内容是样式字符串'css‐loader'//use数组中loader执行顺序,从右到左,从下到上,依次执行]}]},

插件(plugins)

先安装插件

npm i html‐webpack‐plugin ‐D

引入webpack插件

功能:默认会创建一个新的html文件,自动引入打包输出的所有资源(js/css)

webpack.config.js

const HtmlWebpackPlugin=require("html-webpack-plugin")
module.exports={entry:,output:{},module:{},//plugins的配置plugins:[new HtmlWebpackPlugin({template'./src/index.html'})],
}

运行打包 npx webpack

会发现多了一个html文件(默认打包只有一个js文件)

打包图片

下载两个loader

npm i url‐loader file‐loader ‐D
npm i html-loader -D

webpack.config.js

module:{rules:[{test:/\.(jpg|png|gif)$/,//当只有一个loader的时候不需要use,可以直接写loaderloader:"url-loader",options:{//当发现图片小于8kb,就会被base64处理limit:8*1024,//关闭url-loader的es6模块化,使用commonjs解析,解决html-loader(使用的是common.js)解析问题esModule:false,//[hash:10]取图片的hash前十位//[ext]取文件原来扩展名name:"[hash:10].[ext]"}},{test:/\.html$/,//处理html文件的img图片(img打包之后文件名变了),负责引入img,从而能被url-loader处理loader:"html-loader",}]},

图片处理成base64

优点:减少请求数量(减轻服务器压力)

缺点:图片体积会更大(文件请求速度变慢)

DevServer(自动编译)

目前我们的每次修改都需要重新打包,不然总是显示之前的效果。此时我们需要创建一个服务器帮助我们解决这个问题

安装

npm i webpack‐dev‐server ‐D

webpack.config.js编写配置

plugins:[
],
//启动:webpack-dev-server
devServer:{//告诉服务器内容的来源。仅在需要提供静态文件时才进行配置contentBase:resolve(__dirname,"dist"),//启动gzip压缩compress:true,//端口号port:3000
}

开发服务器devServer,用来自动编译自动打开浏览器和刷新浏览器

特点:只会在内存中编译打包,不会有任何输出

打包优化

按文件格式分类好各个文件夹

css输出优化

css需要先提取文件

首先下载插件

npm i mini‐css‐extract‐plugin ‐D

修改配置webpack.config.js

const MiniCssExtractPlugin=require("mini‐css‐extract‐plugin");module:{rules:[{test:/\.css$/,use:[//提取js中的css成单独文件MiniCssExtractPlugin.loader,'css‐loader']}]},
plugins:[new MiniCssExtractPlugin({//对输出的CSS文件放到指定目录并重命名filename:"css/build.css"})
],

js输出优化

直接在filename后面加上文件夹的名字重新打包即可

	entry:"./src/index.js",output:{publicPath:"/",filename:"js/bundle.js",path:resolve(__dirname,"dist")},

img输出优化

			{test:/\.(jpg|png|gif)$/,loader:"url-loader",options:{limit:8*1024,esModule:false,name:"[hash:10].[ext]",//输出优化outputPath:'img'}},

性能优化

开发环境优化

优化打包构建速度

如果我这个项目有一百个js

文件,当我修改了其中一个文件之后,其他99个文件并没有修改但也是重新执行了,这种效率肯定很浪费

引入一个新的东西来解决这个问题叫HMR

HMR:hot module replacement 热模块替换

作用:一个模块发生变化,只会重新打包这一个模块而不是所有模块

极大提升构建速度

使用方法,只需要在服务器配置加入hot:true就可以,注意需要重启服务

优化代码调试

source-map:一种提供源代码到构建后代码映射技术(如果构建后代码出错了,通过映射关系可以追踪到源代码错误),只需做下面配置即可

生产环境优化

优化打包构建速度

优化代码运行的行能


http://www.ppmy.cn/news/559463.html

相关文章

WebSecurity

WebSecurity 此类是由配置类WebSecurityConfiguration创建,为了创建FilterChainProxy,称为Spring安全过滤器链。springSecurityFilterChain是DelegatingFilterProxy所委托的过滤器。对WebSecurity的自定义可以通过创建WebSecurityConfigurer来完成&…

JetBrains WebStorm 2022.2 Crack

WebStorm 为您提供 Javascript 和编译到 Javascript 语言、Node.js、HTML 和 CSS 的智能编码帮助。享受所有这些语言的代码完成、强大的导航功能、即时错误检测和重构。 WebStorm 是 JavaScript 和相关技术的集成开发环境。与其他 JetBrains IDE 一样,它使您的开发体…

管理员后台爆破扫描器-WebCrack

本文来源我在某大佬博客上看到的一篇扫描器webcrack,它支持如discuz,织梦,phpmyadmin等主流CMS,自己下来玩了一下 环境: 下载github项目 git clone https://github.com/yzddmr6/WebCrack依赖 pip install -r requir…

iPhone/iPad使用A-Shell免越狱运行SQLmap等渗透工具【持续更新】【A-Shell使用】【渗透工具】【待完善】

【最后一次更新:2023.​​4.08】 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任~ 这是国内第一篇原创有关A-Shell的文章…

[WRECKCTF 2022] crypto,reverse,pwn部分WP

国庆两天,一个比较容易的比赛。会的题不少。感觉到自信了。 目录 国庆两天,一个比较容易的比赛。会的题不少。感觉到自信了。 crypto spin baby-rsa mtp prime token rsa lsfr reverse flag-chcker adwanced-flag-checker my-frob reverse…

InternetCrackUrl

InternetCrackUrl函数是把一个URL填充到URL_COMPONENTS结构中, 那返回的是0,是什么意思了?能指点一下吗? InternetCrackUrl函数是把一个URL填充到URL_COMPONENTS结构中。 不是下载用的。

Web-crawler

导航 (返回顶部) 1. spider 1.1 robots.txt1.2 ads.txt1.3 security.txt1.4 blogger.com 上的 robots.txt和ads.txt2. 爬虫软件列表 2.1 介绍一些比较方便好用的爬虫工具和服务2.2 33款可用来抓数据的开源爬虫软件工具(全都没试过)3. 更多相关 1. spider1.1 robots.txt1.2 ads.…

WebCrack:网站后台弱口令批量检测工具 ——yzddMr6

经过这么长时间的测试终于算是可以上线了,写篇文章跟大家分享一下自己的开发思路吧 注:本工具借鉴吸收了TideSec的web_pwd_common_crack很多优秀的思路,在此基础上增加了很多拓展功能使其更加强大,在这里给TideSec的大佬点个赞&am…