02---webpack基础用法

01 entry打包的入口文件:
单入口entry是一个字符串:适用于单页面项目module.exports = {entry:'./src/index.js'}多入口entry是一个对象module.exports = {entry:{index:'./src/index.js',app:'./src/app.js'}}
02 output打包的出口文件:
单入口配置module.exports = {entry:'./src/index.js'output:{path:path.resolve(__dirname,'dist'),filename:'bundle.js'
}}多入口的配置 需要通过站位符【name】来进行站位,相当于是在dist输出两个出口的文件module.exports = {entry:{app:'./src/app.js',index:'./src/index.js'}output:{path:path.resolve(__dirname,'dist'),filename:'[name].js'
}}
03 loaders:webpack只支持js和json文件类型,loaders需要把其他文件进行转化为有效的模块
const path = require('path')module.exports = {module:{rules:[  test指定对应的规则  use加载对应的loader{test:/\.txt$/,use:'raw-loader'}]}}

04 plugin插件的配置:
const path = require('path')module.exports = {plugins:[  放到plugins的数组中new HtmlWebpackPlugin({template:'./src/index.html'})]}

05 modu:用来指定当前的构建环境:production development node
mode模式默认为production设置 process.env.NODE_ENV的值为 development.开启NamedChunksPlugin和NamedModulesPlugin设置 process.env.NODE_ENV的值为 production.开启FlagDependencyUsagePlugin ,FlagIncludedchunksPluginModuleConcatenationPlugin ,NoEmitOnErrorsPlugin0ccurrenceOrderPlugin,sideEffectsFlagPlugin和TerserPlugin。none:不开启任何优化选项
 06 解析ES6以及React JSX语法:
解析ES6---需要安装npm install @babel/core  @babel/preset-env  babel-loader -Dwebpack.config.js配置 modele.exports = {module:{rules:[{test:/\.js$/,use:'babel-loader'}]}}bebel的配置文件是.babelrc {"presets":["@babel/preset-env"],"plugins":["@babel/proposal-class-properties"]
}解析react jsx的语法: 需要再安装 npm i @babel/preset-react:在 .babelrc文件中增加@babel/preset-react{"presets":["@babel/preset-env","@babel/preset-react"],"plugins":["@babel/proposal-class-properties"]
}
07 react使用的案例 : 需要安装react react-dom插件, src创建search.js文件
search.js文件代码如下import React from 'react'import ReactDom from 'reacr-dom'class Search extends React.Component {render(){return {<div>我是react</div>}}}RactDom.render(<Search/>,document.getElementById('root'))

 再执行 npm run build的命令 在dist目录下会创建出一个search.js文件,index.html页面中引入文件

<html><body><div id='root'></div><script src='./dist/search.js'></script></body></html>
08 解析css与less,需要使用style-loader css-loader less-loader
module.exports = {module:{rules:[{test:/\.css$/,use:['style-loader','css-loader']},{test:/\.less$/,use:['style-loader','css-loader','less-loader']}]}}
09 解析图片与字体资源
module.exports = {module:{rules:[{test:/\.(png | svg | jpg | gif)$/,use:['file-loader']},{test:/\.(woff | woff2 | eot | ttf | otf)$/,use:['file-loader']}// 这里是解析base64        {test:/\.(png | svg | jpg | gif)$/,use:[{loader:'url-loader',options:  {limit:10240}}]},]}]}}
10 webpack中的文件监听:源码发生变化 自动构建输出新的文件;
1 第一种 在package.json文件中: 缺点 还需要自己手动刷新浏览器“build”:“webpack --watch”2 第二种  在webpack.config.js中设置  module.exports = {watch:true, watchOptions:{ignored:/node_modules, aggregateTimeout:300,  监听到变化发生后300ms后再去执行poll:1000  判断文件是否发生变化 默认美妙访问1000次}}
11 webpack热更新。代码更新后会自动刷新浏览器不用手动刷新,需要借助webpack-dev-server
在package.json文件中进行配置:"scripts":{"dev":"webpack-dev-server --open"}在webpack.config.js文件中配置const webpack = require('webpack')plugins:[new webpack.HotModuleReplacementPlugin()
],devServer:{contentBase:'./dist',hot:true}
12 文件指纹:打包输出的文件名会有一个后缀:<src="index_0123223db.js?bid=123">
hash:和整个项目的构建有关,只要项目文件有修改,整个项目构建的hash值会更改chunkhash:和webpack打包的chunk有关 不同的entry会生成不同的chunkhash值contenthash:根据文件内容来定义hash 文件内容不同contenthash不变使用的方法 js使用chunckhash  css使用contenthash  图片使用hashmodulle.exports = {output:{filename:`[name]_[chunckhash:8].js`,path:__dirname+'/dist'},plugins:[new MiniCssExtractPlugin({filename:`[name]_[contenthash:8].css`})
],module:{rules:[{test:/\.(png | svg | gif)$/, use:[{loader:'file-loader', options:{name:`img/[name]_[hash:8].[ext]`}}]}]}}这里需要注意的是如果是要在dist目录下输出单独的css文件 需要将use:['style-loader'换成MiniCssExtractPlugin.loader]
13 代码压缩[html,css,js]
webpack内置了uglifyjs-webpack-plugin插件,打包后的代码会自动压缩js代码。html的压缩:修改html-webpack-plugin 设置压缩的参数module.exports = {entry:'./src/index.js',output:{path:__dirname+'/dist',filename:'[name]_[chunkhash:8].js'},plugins:[new HtmlWebpackPlugin({template:path.join(__dirname,'src/search.html'),filename:'search.html',chunks:['search'],inject:true,minify:{html5:true,collapseWhitespace:true,preserveLineBreaks:false,minifyCSS:true,minifyJS:true,removeComments:false}})]}css的压缩需要使用optimize-css-assets-webpack-plugin和cssnanomodule.exports = {entry:'./src/index.js',output:{path:__dirname+'/dist',filename:'[name]_[chunkhash:8].js'},plugins:[new OptimizeCssAssetsPlugin({assetNameRegExp:/\.css$g/,cssProcessor:require('cssnano')})]}
14 自动清理构建目录产物 :每次构建的时候还需要手动的删除dist目录下的文件
借助与webpack的clean-webpack-plugin的插件每次构建可以自动删除dist目录的文件module.exports = {plugins:[new CleanWebpackPlugin()]}

        

        

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

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

相关文章

基于SSM的网络视频播放器

目录 背景 技术简介 系统简介 界面预览 背景 互联网的迅猛发展彻底转变了全球各类组织的管理策略。自20世纪90年代起&#xff0c;中国政府和企业便开始探索利用网络系统进行信息管理。然而&#xff0c;早期的网络覆盖不广泛、用户接受度不高、相关法律法规不完善以及技术开…

C#实现只保存2天的日志文件

文章目录 业务需求代码运行效果 欢迎讨论&#xff01; 业务需求 在生产环境中&#xff0c;控制台窗口不便展示出来。 为了在生产环境中&#xff0c;完整记录控制台应用的输出&#xff0c;选择将其输出到文件中。 但是&#xff0c;存储所有输出的话会占用很多空间&#xff0c;…

uniApp使用uview对vuex的二次封装实现全局变量

1、uni-app目根目录新建’/store/index.js’&#xff0c;并复制如下内容到其中 2、uni-app目根目录新建’/store/ u . m i x i n . j s ′ &#xff0c;并复制如下内容到其中&#xff0c;由于 H X 某些版本的限制&#xff0c;我们无法帮您自动引入 " u.mixin.js&#xff0…

element-ui card 组件源码分享

今日简单分享 card 组件源码&#xff0c;主要从以下两个方面&#xff1a; 一、card 组件页面结构 二、card 组件属性 2.1 header 属性&#xff0c;设置 header&#xff0c;也可以通过 slot#header 传入 DOM&#xff0c;类型 string&#xff0c;无默认值。 组件使用部分&#…

Linux TUN设备实现Tunnel性能分析

一、TUN/TAP设备原理&#xff1a; Linux的TUN/TAP设备是一种可以使得应用层与TCP/IP协议栈交互的驱动模块&#xff0c;通常用于组建虚拟局域网中的点对点隧道&#xff08;Tunnel&#xff09;&#xff0c;可以工作于2层&#xff08;TAP设备&#xff09;和3层&#xff08;TUN设备…

Linux的软链接和硬链接

1、软链接 概念&#xff1a;给文件创建一个快捷方式&#xff0c;依赖原文件&#xff0c;和普通文件没有区别。 特性&#xff1a; 可以给存在的文件或目录创建软链接可以给不存在的文件或目录创建软链接可以跨文件系统创建软链接删除软链接不影响原文件、删除原文件会导致软链…

moment.js 产出未知格式的时间,可能的原因

moment.js 产出未知格式的时间&#xff0c;可能的原因 有个问题困扰我好久了&#xff0c;在项目中使用格式化时间的时候会产出一些千奇百怪的格式&#xff0c;产出的文字我都不认识。 百思不得其解&#xff0c;终于今天在看代码的时候发现了这个问题。 它的表现是这样的&…

算法之模拟

前言 模拟算法通俗地来解释就是 "照葫芦画瓢", 通常这类题的题目中就说明了这道题应该怎么做, 要做的就是把题目的意思转化为代码, 这类题的特点是思路比较简单, 考查的是代码能力. 1. 模拟算法流程, 最好在演草纸上过一遍流程, 凭空想象可能会忽略一些细节 2. 把流…

软件架构复用

1.软件架构复用的定义及分类 软件产品线是指一组软件密集型系统&#xff0c;它们共享一个公共的、可管理的特性集&#xff0c;满足某个特定市场或任务的具体需要&#xff0c;是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理、复用、集成新的系统。核心…

比较靠谱的测试进度报告

在测试的过程中&#xff0c;不要等领导过问&#xff0c;有一份比较靠谱的测试进度报告&#xff0c;让关心和支持项目的干系人心里有谱&#xff0c;有利于管理层对项目的监控和资源的支持&#xff0c;有利于项目团队成员之间沟通协调&#xff0c;及时发现问题利于项目风险控制等…

OpenHarmony实战:CMake方式组织编译的库移植

以double-conversion库为例&#xff0c;其移植过程如下文所示。 源码获取 从仓库获取double-conversion源码&#xff0c;其目录结构如下表&#xff1a; 表1 源码目录结构 名称描述double-conversion/cmake/CMake组织编译使用到的模板double-conversion/double-conversion/源…

【漏洞复现】某科技X2Modbus网关多个漏洞

漏洞描述 最近某科技X2Modbus网关出了一个GetUser的信息泄露的漏洞,但是经过审计发现该系统80%以上的接口均是未授权的,没有添加相应的鉴权机制,以下列举多个未授权接口以及获取相关敏感信息的接口。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律…

【C++11】异常机制

文章目录 一. 什么是异常&#xff1f;二. 为什么要引入抛异常机制&#xff1f;方法一&#xff1a;直接终止程序方法二&#xff1a;返回错误码方法三&#xff1a;C 标准库中的 setjmp 和 longjmp 组合总结 C 中处理异常的方式 三. 如何进行抛异常&#xff1f;1. 关于抛出的异常对…

[QOpenGLWidget+QMouseEvent]实时绘制长方形

复现moho-打卡第1天 - 20240402 1.1--QOpenGLWidget中显示长方形 实现方法&#xff1a;顶点着色器中给定长方形的四个顶点数据&#xff0c;代码如下&#xff1a; // 顶点位置 GLfloat vertics[1][4][3] { {{mousePressPosX,mousePressPosY,0.0},{mousePressPosX,mouseMoveP…

网络爬虫:爬取假数据

网络爬虫&#xff1a;爬取假数据 文章目录 网络爬虫&#xff1a;爬取假数据前言一、项目介绍&#xff1a;二、项目来源&#xff1a;三、架构图&#xff1a;&#xff08;流程图&#xff09;四、使用了什么技术&#xff1a;&#xff08;知识点&#xff09;五、结果示意图&#xf…

Qt使用opencv,进行视频录制,功能打开、关闭摄像头,开始、结束录制视频,暂停、继续录制,并保存视频文件

1.效果图 2 代码实现 2.1 .h文件 #ifndef VIDEORECORDWIDGET_H #define VIDEORECORDWIDGET_H#include <QWidget>#include<QFileDialog>#include <QImage> #include <QLabel> #include <QTimer> #include <opencv2/opencv.hpp>using name…

Linux实验过程

答案截图获取&#xff0c;代写&#xff1a; https://laowangall.oss-cn-beijing.aliyuncs.com/studentall.pdf 基本任务&#xff1a; 1.Linux操作系统安装 2.vi文本编辑 3. Linux用户及文件管理命令 4. Linux权限管理命令 5. Linux网络服务 提高任务&#xff1a; 1、Li…

DIY蓝牙键盘(1) - 理解 键盘报文(免费)

DIY蓝牙键盘(1) - 理解键盘报文 1. 键盘报文体验 一个键盘对于用户的体验是&#xff0c;用户按按键A他能看到字母A会在主机上显示出来。那这是如何实现的&#xff1f; 其实很简单&#xff0c;只要键盘发送下面的两个报文给主机&#xff0c;字母A就能在主机上显示出来。 (1)…

数据结构——图的应用(最小生成树,最短路径,拓扑排序,关键路径)

目录 1.最小生成树 1.概念回顾——生成树 2.最小生成树概念 2.构造最小生成树 1.MST性质 2.Prim算法 3.Kruskal 算法 4.两种算法比较 3.最短路径 1.两点间最短路径 2.某源点到其它各点最短路径 3.单源最短路径——用Dijkstra算法 4.所有顶点间的最短路径…

Flask Python:模糊查询filter和filter_by,数据库多条件查询

数据库&#xff08;sqlalchemy&#xff09;多条件查询 前言一、filter、filter_by实现过滤查询1、filter_by()基础查询并且查询&#xff08;多条件查询&#xff09; 2、filter()like&#xff1a;模糊查询and&#xff1a;并且查询or&#xff1a;或者查询 二、all(),first(),get(…