webpack5 (二)

什么是bable

是 js 编译器,主要的作用是将 ES6 语法编写的代码转换为向后兼容的 js 语法,以便可以运行在当前版本和旧版本的浏览器或其他环境中。

它的配置文件有多种写法:

babel.config.*(js/json)
babelrc.*(js/json)
package.json 中的 babel:不需要创建文件,在原有的文件基础上写。

babel 会查找和自动读取babel的配置文件,只需要存在一个即可。

 

 如何处理html资源

如果在本身的 html 文件中,一直进行手动引入容易出错,而webpack有处理html的插件,可以帮助我们进行自动的资源引入。

HtmlWebpackPlugin | webpack 中文文档 | webpack 中文文档 | webpack 中文网

1.下载插件

2.引入 并在plugin中进行配置

const HtmlWebpackPlugin = require('html-webpack-plugin');//引入module.exports = {entry: 'index.js',output: {path: path.resolve(__dirname, './dist'),filename: 'index_bundle.js',},plugins: [new HtmlWebpackPlugin()//在plugin中进行配置],
};

如果希望保留原本html中的结构,可以进行设置,向 HtmlWebpackPlugin() 中传入template对象作为参数:

 plugins: [new HtmlWebpackPlugin({//模板,以public/index.html文件创建新的html文件//新的文件有两个特点 1.保留原本的结构 2.自动引入打包输出的资源template:path.resolve(_dirname,'public/index.html')})//在plugin中进行配置],

开发服务器自动打包

开发环境下,如果对代码进行修改,每次都需要手动重新打包才会更新代码效果,安装 server 包后,进行配置,可以实现代码修改后保存就自动重新编译。

 

⚠️注意:开发服务器不会输出资源,它是在内存中进行编译打包的。所以之前在 output 中的设置打包前自动清空 clean:true,可以去掉。同时,使用了 devServer 后运行命令也会改变。npx webpack变成npx webpack serve。

生产模式

生产模式即开发完成后,需要得到代码来进行部署上线,这个模式下,主要是对代码进行优化,让其性能更好,优化主要从两个方面进行:

1.优化代码运行性能
2.优化代码打包速度

注意:

因为生产模式是没有输出的,所以不需要指定输出目录,即 output 中的 path ,可以设置为undefined,同时在配置文件中,如果将不同环境的配置文件放在新设置的文件夹中进行管理,那么需要修改配置文件中的绝对路径。

生产模式中不存在devServer

在 package.json 中 script 标签下配置执行生产/开发模式的指令。( build/dev/start 等)

生产模式下如何提取 css 成单独文件(性能优化)

在使用 webpack 对 css 进行处理时,顺序是先将 css 文件打包到 js 文件之中,在 js 文件加载时,再创建一个 style 标签来生成样式。

这种方式对于网站来说,会出现闪屏现象,用户体验不好,可以通过生成单独的 css 文件,通过link 标签加载来解决。

MiniCssExtractPlugin | webpack 中文文档 | webpack 中文文档 | webpack 中文网

css兼容性处理

postcss-loader | webpack 中文文档 | webpack 中文文档 | webpack 中文网

⚠️ 插件需要放在 css-loader 后, css预处理器 loader 之前,用来指示 css 的兼容性。

在 package.json 中配置 browserslist,取三者的交集,用来指示做兼容性的范围。

注意:如果loader是直接可以用的,只需要写名字就可以,但是如果需要给 loader 写一些配置项,需要用对象的方式写入,option 中来写具体配置。

module.exports = {module: {rules: [{test: /\.css$/i,use: ['style-loader','css-loader',{loader: 'postcss-loader',options: {postcssOptions: {plugins: [['postcss-preset-env',{// 其他选项},],],},},},],},],},
};
  "browserslist":["last 2 version",//所有浏览器最近的两个版本"> 1%",//覆盖99%的浏览器 除去一些冷门的"not dead"//去掉一些已经废弃的浏览器版本]

对loader的封装

在配置文件中,对于存在多个预处理器的时候,配置会出现很多重复的代码,可以进行优化,将共同的部分抽离出来,作为一个方法进行返回,在 loader 中 use 后直接使用该方法。

 

css压缩

CssMinimizerWebpackPlugin | webpack 中文文档 | webpack 中文文档 | webpack 中文网

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

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

相关文章

美团增量数仓建设新进展

摘要:本文整理自美团系统研发工程师汤楚熙,在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为四个部分: 建设背景核心能力设计与优化业务实践未来展望 点击查看原文视频 & 演讲PPT 一、美团增量数仓的建设背景 美团数仓架…

k8s service (二)

K8s service (二) Endpoint Endpoint是kubernetes中的一个资源对象,存储在etcd中,用来记录一个service对应的所有pod访问地址,它是根据service匹配文件中selector描述产生的。 一个Service由一组Pod组成,这些Pod通过Endpoints…

SpringBoot 调用外部接口

SpringBoot 调用外部接口 一、第一种方式(HttpClient等) 使用插件方式,比如自带的HttpClient,或者OkHttp,甚至是原生的HttpURLConnection 等等,这里以HttpClient为例。 1、封装工具类 简单封装的get请求 /*** 发送get请求:带请求…

为什么要使用依赖注入?直接new对象不香吗?为什么要把简单的问题复杂化?

作者:newki 为什么要使用依赖注入?直接new对象不香吗?为什么要把简单的问题复杂化? 你是不是在炫技,是不是像装13? 这还真不是,如果说我使用的Dagger2,还真是炫技,NB啊。Dagger的坑…

docker搭建es+kibana

docker搭建eskibana 0 安装docker 如果是mac或者windows,可以直接安装Docker Desktop更加便捷。 前提条件: Docker可以运行在Windows、Mac、CentOS、Ubuntu等操作系统上 Docker支持以下的CentOS版本: CentOS 7 (64-bit)CentOS 6.5 (64-bit…

前端需要理解的浏览器知识

1 浏览器架构 浏览器是多进程多线程的应用程序,多进程可以避免相互影响和减少连环崩溃的几率: 浏览器(主)进程:主要负责界⾯显示、⽤户交互、⼦进程管理、存储等功能。内部会启动多个线程分别处理不同的任务。⽹络进…

在线设计APP ui的网站,分享这7款

在数字时代,用户界面(UI)设计变得非常重要,因为良好的UI设计可以改善用户体验,增强产品吸引力。随着科学技术的发展,越来越多的应用在线设计网站出现,为设计师和团队提供了一种新的创作方式。本…

论文笔记: One Fits All:Power General Time Series Analysis by Pretrained LM

1 intro 时间序列领域预训练模型/foundation 模型的研究还不是很多 主要挑战是缺乏大量的数据来训练用于时间序列分析的基础模型——>论文利用预训练的语言模型进行通用的时间序列分析 为各种时间序列任务提供了一个统一的框架 论文还调查了为什么从语言领域预训练的Transf…

什么是软件压力测试?软件压力测试工具和流程有哪些?

软件压力测试 一、含义:软件压力测试是一种测试应用程序性能的方法,通过模拟大量用户并发访问,测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题,如内存泄漏、线程锁、资源泄漏等,…

开源软件的崛起:历史与未来

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

go学习之go的语法知识

文章目录 1.go语言开发注意事项2.golang常用的转义字符(escape char)3.golang开发常用的问题小结与提示: 4.go语言注释类型(1).注释类型1)行注释2)块注释(多行注释) (2)使用细节:1&a…

2023国赛数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…