您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页常见的几道webpack面试题及答案汇总!

常见的几道webpack面试题及答案汇总!

来源:化拓教育网

有网友碰到这样的问题“常见的几道webpack面试题及答案汇总!”。小编为您整理了以下解决方案,希望对您有帮助:

解决方案1:

常见的Webpack面试题及答案汇总一、Webpack了解吗?讲一讲原理,怎么压缩代码?

答案:Webpack是目前比较流行的前端构建工具,它基于入口文件,使用不同的Loader来处理不同类型的文件。

原理:

Webpack首先读取入口文件的内容。

分析入口文件,递归地读取模块所依赖的文件内容,生成AST(抽象语法树)。

根据AST语法树,生成浏览器能够运行的代码。

压缩代码:

Webpack在生产模式下(mode: 'production')会自动进行代码压缩。

它通过内置的TerserPlugin插件来压缩JavaScript代码,移除冗余代码、缩短变量名等,从而减小文件体积,提高加载速度。

二、Webpack怎么配置?

答案:Webpack的配置主要通过webpack.config.js文件来进行,主要配置以下5个核心部分:

mode:

通过选择development、production或none之一来设置mode参数。

这会启用Webpack内置在相应环境下的优化。

entry:

入口起点(entry point)指示Webpack应该使用哪个模块作为构建其内部依赖图的开始。

Webpack会找出入口起点直接和间接依赖的模块和库。

output:

output属性告诉Webpack在哪里输出它所创建的bundle,以及如何命名这些文件。

默认输出文件是./dist/main.js,其他生成文件默认放置在./dist文件夹中。

loader:

Webpack只能理解JavaScript和JSON文件。

Loader让Webpack能够处理其他类型的文件,并将它们转换为有效模块,以供应用程序使用。

plugin:

Loader用于转换某些类型的模块,而插件则可以用于执行范围更广的任务。

包括打包优化、资源管理、注入环境变量等。

三、Webpack怎么打包?

答案:Webpack的打包过程主要包括以下几个步骤:

初始化参数:

解析Webpack配置参数,合并shell传入和webpack.config.js文件配置的参数,形成最后的配置结果。

开始编译:

使用上一步得到的参数初始化compiler对象,注册所有配置的插件。

插件监听Webpack构建生命周期的事件节点,做出相应的反应。

执行compiler对象的run方法开始执行编译。

确定入口:

从配置的entry入口开始解析文件,构建AST语法树,找出依赖,递归下去。

编译模块:

递归中根据文件类型和loader配置,调用所有配置的loader对文件进行转换。

再找出该模块依赖的模块,再递归本步骤直到所有入口依赖的文件都经过了处理。

完成模块编译并输出:

递归完成后,得到每个文件的结果,包含每个模块以及它们之间的依赖关系。

根据entry或分包配置生成代码块chunk。

输出完成:

输出所有的chunk到文件系统。

四、说说gulp和webpack的区别?

答案:

Gulp:

强调的是前端开发的工作流程。

通过配置一系列的task,定义task处理的事务(如文件压缩合并、雪碧图、启动server、版本控制等),然后定义执行顺序。

可以让Gulp执行这些task,从而构建项目的整个前端开发流程。

类似于产品的流水线,控制整个产品的开发流程。

Webpack:

是一个前端模块化方案,更侧重模块打包。

把开发中的所有资源(图片、JS文件、CSS文件等)都看成模块。

通过loader(加载器)和plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。

强调模块化开发,文件压缩合并、预处理等功能只是附带功能。

五、Lodash了解过吗?

答案:Lodash是一个一致性、模块化、高性能的JavaScript实用工具库。

特点:

Lodash的所有函数都不会在原有的数据上进行操作,而是复制出一个新的数据而不改变原有数据。

通过降低array、number、objects、string等的使用难度,让JavaScript变得更简单。

模块化方法:

遍历array、object和string。

对值进行操作和检测。

创建符合功能的函数。

常用语法:

cloneDeep:深拷贝。

uniq:数组去重。

compact:去除假值。

filter和reject:过滤集合传入匿名函数。

join:将array中的所有元素转换为由separator分隔的字符串等。

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务