有网友碰到这样的问题“常见的几道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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务