前端面试题-webpack相关

1 打包体积 优化思路

  • 提取第三⽅库或通过引⽤外部⽂件的⽅式引⼊第三⽅库
  • 代码压缩插件 UglifyJsPlugin
  • 服务器启⽤gzip压缩
  • 按需加载资源⽂件 require.ensure
  • 优化 devtool 中的 source-map
  • 剥离 css ⽂件,单独打包
  • 去除不必要插件,通常就是开发环境与⽣产环境⽤同⼀套配置⽂件导致

2 打包效率

  • 开发环境采⽤增量构建,启⽤热更新
  • 开发环境不做⽆意义的⼯作如提取 css 计算⽂件hash等
  • 配置 devtool
  • 选择合适的 loader
  • 个别 loader 开启 cache 如 babel-loader
  • 第三⽅库采⽤引⼊⽅式
  • 提取公共代码
  • 优化构建时的搜索路径 指明需要构建⽬录及不需要构建⽬录
  • 模块化引⼊需要的部分

3 Loader

  • 编写⼀个loader

     loader 就是⼀个 node 模块,它输出了⼀个函数。当某种资源需要⽤这个loader 转换时,这个函数会被调⽤。并且,这个函数可以通过提供给它的this 上下⽂访问 Loader API 。 reverse-txt-loader
    
import 、 babel-plugin-transform-runtime
// 定义
module.exports = function(src) {
//src是原⽂件内容(abcde),下⾯对内容进⾏处理,这⾥是反转
var result = src.split('').reverse().join('');
//返回JavaScript源码,必须是String或者Buffer
return `module.exports = '${result}'`;
}
//使⽤
{
test: /\.txt$/,
use: [
{
'./path/reverse-txt-loader'
}
]
},

4 说⼀下webpack的⼀些plugin,怎么使⽤webpack对项⽬进⾏优化

构建优化

  • 减少编译体积 ContextReplacementPugin 、 IgnorePlugin 、 babel-plugin-

  • 并⾏编译 happypack 、 thread-loader 、 uglifyjsWebpackPlugin 开启并⾏

  • 缓存 cache-loader 、 hard-source-webpack-plugin 、 uglifyjsWebpackPlugin 开启缓存、 babel-loader 开启缓存

  • 预编译 dllWebpackPlugin && DllReferencePlugin 、 auto-dll-webapck-plugin

性能优化

  • 减少编译体积 Tree-shaking 、 Scope Hositing
  • hash 缓存 webpack-md5-plugin
  • 拆包 splitChunksPlugin 、 import() 、 require.ensure

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

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

相关文章

【Nodejs】Express模板使用

1.Express脚手架的安装 安装Express脚手架有两种方式: 使用express-generator安装 使用命令行进入项目目录,依次执行: cnpm i -g express-generator可通过express -h查看命令行的指令含义 express -hUsage: express [options] [dir] Optio…

Zia和ChatGPT如何协同工作?

有没有集成ChatGPT的CRM系统推荐?Zoho CRM已经正式与ChatGPT集成。下面我们将从使用场景、使用价值和使用范围等方面切入讲述CRMAI的应用和作用。 Zia和ChatGPT如何协同工作? Zia和ChatGPT是不同的人工智能模型,在CRM中呈现出共生的关系。 …

JAVA基础-Stream流

引言 Java 8 版本新增的Stream,配合同版本出现的Lambda ,给我们操作集合(Collection)提供了极大的 便利。Stream流是JDK8新增的成员,允许以声明性方式处理数据集合,可以把Stream流看作是遍历数据集 合的一个…

java多线程常见面试题

1、线程和进程的区别 本质区别: 进程是一个程序的实例,是操作系统资源分配的最小单位;,是任务调度与执行的最小单位包含关系: 进程至少由一个线程组成,线程可看做轻量级进程资源开销: 进程有自…

通用文字识别OCR 之实现自动化办公

摘要 随着技术的发展,通用文字识别(OCR)已经成为现代办公环境中不可或缺的工具之一。OCR技术可以将印刷或手写文本转换为可编辑或可搜索的数字文本,极大地提高了办公效率并实现了自动化办公。本文将深入探讨OCR技术在实现自动化办…

NLP_文本去重_附Python实现【MinHash和MinHashLSH】算法

NLP_文本去重_附Python实现【MinHash和MinHashLSH】算法 前言代码的实现【注释丰富】 前言 大规模的文本去重是目前比较热门的一个技术,由于大模型的兴起,更多的高质量数据集也是大家迫切需要的。 关于如何进行文本去重? 直观的方法首先是利…

一百三十五、Azkaban——AzkabanWebServer服务开启后秒退

一、问题 Azkaban的AzkabanWebServer服务开启后秒退,造成Azkaban的页面登录不上 AzkabanWebServer服务开启后,第一个jps里面有AzkabanWebServer,随后第二个jps里面没有AzkabanWebServer 二、问题原因 MySQL中azkaban数据库的表executors的…

【ARMv8/v9 异常模型入门及渐进 13 -- ARM Linux 系统调用流程分析】

文章目录 1.1 SYSCALL 过程调用规范1.1.1 系统调用流程概括1.1.2 ARMv7 系统调用中断处理 上篇文章:ARMv8/v9 异常模型入门及渐进 12 – ARM Linux 用户栈和系统栈及 CURRENT宏 介绍 1.1 SYSCALL 过程调用规范 当进程因为中断或者系统调用陷入到内核态时&#xff0…

Spring,SpringBoot,Spring MVC的区别是什么

1.Spring是什么 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级…

遇到了一个存在XSS(存储型)漏洞的网站

第一个漏洞self xss(存储型) 存在漏洞的网站是https://www.kuangstudy.com/ 然后点击个人设置 在编辑主页中,我们可以用最简单的script语句进行注入,提交; 出现弹窗,说明它已经把代码进行解析&#x…

java8里如何使用流?《Java8 实战》读书笔记 第 5 章 使用流

目录 第 5 章 使用流5.1 筛选和切片5.1.1 用谓词筛选(filter)5.1.2 筛选各异的元素(distinct)5.1.3 截短流(limit)5.1.4 跳过元素(skip) 5.2 映射(map,fl…

JavaScript常见高级知识点

目录 防抖节流高阶函数函数柯里化数组去重set去重filter去重includes去重 数组扁平化深拷贝getBoundingCilentRectIntersectionObserver自定义事件 防抖 防抖是一种常用的技术手段,在JavaScript中特别常见。它的作用是控制某些高频率触发的事件,在一定时…

RocketMQ消息过滤Tag标签

生产者在封装Message消息时可以传入tag参数,消费者在进行消费时可以进行订阅主题时可以进行tag过滤,代码示例如下. //生产者 public class Producer {public static void main(String[] args) throws Exception{DefaultMQProducer producer new DefaultMQProducer(…

LLM - Chinese-Llama-2-7b 初体验

目录 一.引言 二.模型下载 三.快速测试 四.训练数据 五.总结 一.引言 自打 LLama-2 发布后就一直在等大佬们发布 LLama-2 的适配中文版,也是这几天蹲到了一版由 LinkSoul 发布的 Chinese-Llama-2-7b,其共发布了一个常规版本和一个 4-bit 的量化版本…

Linux命令行宝典:随时查询、轻松应对

🕺作者: 迷茫的启明星 学习路线C语言从0到1C初阶数据结构从0到1 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

Ama no Jaku

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;有一个n*n且仅由0和1构成的矩阵&#xff0c;每次操作可以将一整行或一整列的所有数取反&#xff0c;问能否使所有行中构成的最小数>所有列中构成的最大数 1<n<2000 思路&#xff1a;首先&#xff0c;如果…

H2TEST自动化测试

ref&#xff1a; GitHub - kunyi0605/H2testwpywinauto实战-操作h2testw.exe自动化测试脚本_肤白貌美的博客-CSDN博客 https://www.cnblogs.com/qican/p/15038067.html

Flink CEP (一)原理及概念

目录 1.Flink CEP 原理 2.Flink API开发 2.1 模式 pattern 2.2 模式 pattern属性 2.3 模式间的关系 1.Flink CEP 原理 Flink CEP内部是用NFA&#xff08;非确定有限自动机&#xff09;来实现的&#xff0c;由点和边组成的一个状态图&#xff0c;以一个初始状态作为起点&am…

文件共享服务器(五)sicis

目录 前言 一、概述 1.iscsi概念 2.iscsi介绍 3.相关名词 二、实验 1.构建iscsi服务 2.实现步骤 服务器端 客户端 3.注意事项 总结 前言 iSCSI是由IBM发明的基于以太网的存储协议&#xff0c;该协议与SUN的NFS协议都是为了解决存储资源共享问题的解决方案。两者意图…

git rebase -i

git rebase -i 是一种交互式的 rebase 方式&#xff0c;其中 -i 是 --interactive 的简写。这种方式允许你修改一系列的 commit 信息&#xff0c;在 rebase 过程中有选择地选择、编辑或者合并 commit。 在执行 git rebase -i 命令时&#xff0c;你需要提供一个参数&#xff0c…