前端面试题-webpack

1.webpack是什么?

模块打包工具,用于将前端资源,如JavaScript、css、图片等打包成可以在浏览器运行的静态资源。可以将多个模块打包成一个或多个bundle。

主要功能:

  1. 模块化:可以将多个模块打包成一个或多个bundle,方便管理维护。
  2. 自动化:可以自动处理和编译JavaScript等文件,提高开发效率。
  3. 性能优化:可压缩、去除无用代码等,提高网页加载速度。
  4. 扩展性:可通过插件进行扩展,实现定制化需求。
2.webpack和vite的区别?
  1.  核心原理:webpack基于静态分析,对项目进行模块化构建,通过打包将多个模块打包成静态资源。vite基于ES Module,通过启动服务器实现动态按需编译,减少不必要的构建过程。

  2. 性能:webpack打包速度较慢,因为需要遍历和解析所有的依赖关系。vite通过动态按需编译和缓存机制,提高了打包速度。

  3. 适用场景:webpack适用各类前端项目,尤其是对模块化和代码结构要求高的项目。vite适合快速开发迭代和实时构建的项目,如单页应用程序、博客网站。

  4. 配置复杂度:webpack配置相对复杂,需要手动配置各种家装器和插件等。

  5. 热更新机制:webpack的热更新需要整个模块链重新打包和替换。vite只针对改动的模块进行更新,提高更新速度。

3.如何配置 Webpack 的入口和输出?
module.exports = {  entry: './src/main.js',    //入口output: {    //出口path: path.resolve(__dirname, './dist'),  filename: 'bundle.js'  }  
};
4.如何提高webpack的构建速度? 

优化方案:

  1. 代码压缩:js/css/html代码进行压缩。

  2. 图片压缩

  3. tree shaking:摇树,消除死代码,依赖于ES Moudle的静态语法分析。

  4.  减少ES6转ES5的冗余代码,bable-plugin-transform-runtime。

        3.1 usedExports,通过标记某些函数是否被使用,通过Terser来进行优化

module.exports = {...optimization:{usedExports}
}

优化检测

  1. webpack-bundle-analyzer,可看出文件的大小和各自的依赖
  2. speed-measure-webpack-plugin,分析整个打包的耗时,获取每个loader和每个plugins构建所需要的时间
 5.Webpack 配置中用过哪些 Loader ?都有什么作用?
  1. file-loader:将文件输出到指定的文件夹。
  2. url-loader:和file-loader类似,但可以在文件很小的情况下以base64的方式将文件内容注入到代码中。
  3. image-loader:加载并压缩图片。
  4. babel-loader:将ES6转成ES5代码。
  5. css-loader:加载css文件,支持模块化、压缩、文件导入等。
  6. style-loader:将css注入到JavaScript中,通过DOM操作加载css。
  7. eslint-loader:通过eslint检查JavaScript代码。
  8. postcss-loader:自动添加CSS3部分属性的浏览器前缀
6.Webpack 配置中用过哪些 Plugin ?都有什么作用?
  1. html-webpack-plugin:自动生成HTML文件并注入生成的脚本和样式文件

  2. clean-webpack-plugin:打包前,自动清空打包目录

7.loader和plugin的区别?

loader用于处理非JavaScript模块的文件的转换,将文件作为输入并转换为webpack可以处理的模块。plugin用于扩展webpack的功能,可以在webpack构建中的不同阶段执行自定义操作。

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

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

相关文章

day17 二叉树part04

110. 平衡二叉树 简单 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 class Solution {public boolean isBalanced(TreeNode root) {re…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (3) | 正则化与最优化

前言 📚 笔记专栏:斯坦福CS231N:面向视觉识别的卷积神经网络(23)🔗 课程链接:https://www.bilibili.com/video/BV1xV411R7i5💻 CS231n: 深度学习计算机视觉(2017&#xf…

智能代码:生成式 AI 在软件开发中的革命性角色

想象一下,在智能手机革命性地改变了我们的生活之后,现在轮到了生成式 AI 在软件开发领域掀起风暴。你知道吗,如果代码能自己编写自己,这将是多么惊人的一步?这就好比我们现在能轻松地用手机应用管理日常生活一样&#…

【嘉立创EDA-PCB设计指南】1.PCB基本概念及原理图绘制

前言:本文详解PCB基本概念以及实现MCU最小系统原理图的绘制(原理图包括MCU芯片GD32F103C8T6、外部晶振、输出端口、USB输入口、5v转3v3稳压输出、复位按键、唤醒按键、LED)。为本专栏后面章节实现PCB绘制做准备。 最终绘制的原理图如下所示&…

代码随想录算法训练营第二十八天| 93.复原IP地址、78.子集 、90.子集II

代码随想录算法训练营第二十八天| 93.复原IP地址、78.子集 、90.子集II 题目 93.复原IP地址 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如:"0.1…

2019年认证杯SPSSPRO杯数学建模B题(第二阶段)外星语词典全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 基于统计和迭代匹配的未知语言文本片段提取模型 B题 外星语词典 原题再现: 我们发现了一种未知的语言,现只知道其文字是以 20 个字母构成的。我们已经获取了许多段由该语言写成的文本,但每段文本只是由字母…

注意!不清楚这些,2024上半年软考别轻易尝试!

看着周围的朋友们纷纷去考软考,很多人也跃跃欲试了吧。那我劝你,如果不清楚这些,不要轻易考2024年软考! 01 软考介绍 软考是计算机技术与软件专业技术资格(水平)考试的简称,由工信部、人社部领导…

面试经典150题(84-84.5)

leetcode 150道题 计划花两个月时候刷完,今天(第四十二天)完成了1道(84)150: 84.(17. 电话号码的字母组合)题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合…

使用Go语言的HTTP客户端和服务器

使用Go语言进行HTTP客户端和服务器开发是一种高效且强大的方式。Go语言的标准库提供了对HTTP协议的全面支持,使得创建HTTP客户端和服务器变得简单。 首先,让我们来看一下如何创建一个简单的HTTP服务器。在Go中,可以使用net/http包来创建HTTP…

HNU-计算机网络-实验5(自选)-安全相关编程实验

计算机网络 课程综合实验安全相关编程实验(RUST) 计科210X 甘晴void 202108010XXX 【前言】 这个《课程综合实验》是21级开始新加的实验,之前都没有。具体的可以看实验指导书,是用的19级同学的毕设。我完成的这个实验需要一点点R…

left join NULL踩坑

1、背景 因为最近响应监管,做数据全面匿名化的需求。会在写入数据库时,把姓名身份证做MD5处理后,只保留32位的前30位,保证即使拿到处理后的数据,也无法复原,恢复到源数据。 相应的,大数据BDP …

java-方法-动动小手指给个一键三连吧❤️✨

文章目录 1.概念2.静态方法和非静态方法2.1静态方法2.2非静态方法 3 参数传递方式4.方法的重载5.命令行传参6.可变参数7.递归作业 1.概念 在面向对象编程中,方法(Method)是类或对象中用于执行特定任务的一段代码。方法可以访问和操作对象的属…

第十四讲_css媒体查询

css媒体查询 1. 媒体查询介绍2. 媒体类型3. 媒体特征3.1 常用的媒体特征 4. 逻辑运算符 1. 媒体查询介绍 CSS 媒体查询(media query)是响应式设计的关键组成部分,你可以根据各种设备特征和参数是否存在以及对应的值是否满足条件来应用不同的…

layabox_2d游戏A*寻路实践

使用工具 Red Blob Games 效果 项目地址 LayaAStar2D: Laya2.0引擎2D游戏使用AStar实践。

69_Pandas.DataFrame获取行号和列号

69_Pandas.DataFrame获取行号和列号 将讲解如何从pandas.DataFrame的行名和列名中获取行号和列号,以及如何从列元素的值中获取行名和行号。 下面对内容进行说明。 根据行名和列名获取行号和列号 get_loc() 方法 当行名和列名重复时 列表索引、列 从列元素值获取行…

深入理解 Flink(八)Flink Task 部署初始化和启动详解

JobMaster 部署 Task 核心入口: JobMaster.onStart();部署 Task 链条:JobMaster --> DefaultScheduler --> SchedulingStrategy --> ExecutionVertex --> Execution --> RPC请求 --> TaskExecutor TaskExecutor 处理 JobMaster 的 …

Few-shot Learning:知识点

目标: 让机器自己学会学习,学会理解和判断事物的异同(如,区分两张图片内是相同的东西还是不同的东西,不是识别出是什么东西) Pretraining 前景知识 C o s i n e S i m i l a r i t y Cosine \ Similarity…

❤ Uniapp使用二 ( 日常使用篇)

❤ Uniapp使用二 ( 日常使用篇) 一、表单 1、基础表单验证 form <form submit"formSubmit" reset"formReset"> <view class"uni-form-item uni-column"><view class"title">请选择类型{{selectvalue}}</view&…

Pandas实战100例 | 案例 63: 使用索引合并数据

案例 63: 使用索引合并数据 知识点讲解 在 Pandas 中&#xff0c;除了按列合并数据外&#xff0c;还可以使用 DataFrame 的索引进行合并。这在索引具有特定意义时特别有用。 使用索引合并: 通过指定 left_indexTrue 和 right_indexTrue&#xff0c;可以基于 DataFrame 的索引…

Go语言中的HTTP请求发送

在Go语言中&#xff0c;发送HTTP请求是一种常见的网络操作。Go语言的net/http包提供了强大的API&#xff0c;使开发者能够轻松地构建HTTP请求并处理响应。 下面我们将详细介绍如何使用Go语言发送HTTP请求&#xff0c;包括设置请求参数、处理响应状态码和头部信息、发送JSON数据…