面试常问 webpack 面试题

1.谈一谈你对webpack的理解

        webpack是一个打包模块化js工具,在webpack里一切文件皆模块,通过loader转化文件,通过plugin注入钩子,最后输出由多个模块组合成的文件,webpack专注构建模块化项目。

        webpack可以看做是模块的打包机器:他做的事情是,分析你的项目结构,找到js模块以及其他的一些浏览器不能直接运行的扩展语言,例如:Sass,TS等,并将其打包为合适的格式以供浏览器使用。

2.webpack的工作原理

        webpack可以看你做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的扩展语言(Sass、TypeScript等),并将其转换和打包为合适的格式供浏览器使用。在3.0出现后,webpack还肩负起优化项目的责任。

3.webpack的打包原理

        把一切都视为模块:不管是CSS、JS、Image还是HTML都可以互相引用,通过定义entry.js,对所有依赖的文件进行跟踪,将各个模块通过loader和plugin处理,然后打包在一起。

        按需加载:打包过程中Webpack通过Code Splitting功能将文件分为多个chunks,还可以将重复的部分单独提取出来作为commonChunk,从而实现按需加载。把所有依赖打包成一个bundle.js文件,通过代码分割成单元片段并按需加载。

 4.什么是bundle,什么是chunk,什么是module?

  • bundle:是由webpack打包出来的文件。
  • chunk:代码块,一个chunk由多个模块组合而成,用于代码的合并和分割。
  • module:是开发中的单个模块,在webpack的世界,一切皆模块,一个模块对应一个文件,webpack会从配置的entry中递归开始找出所有依赖的模块。

5.什么是Loader?什么是Plugin?

  • Loader是用来告诉webpack如何转化处理某一类型的文件,并且引入到打包出的文件中
  • Plugin是用来自定义webpack打包过程的方式,一个插件是含有apply方法的一个对象,通过这个方法可以参与到整个webpack打包的各个流程(生命周期)。

6.入口entry和出口output

  • entry:入口,webpack执行构建的第一步将从entry开始,可抽象成输入。告诉webpack要使用哪个模块作为构建项目的起点,默认为./src/index.js。
  • output:出口,告诉webpack在哪里输出它打包好的代码以及如何命名,默认为./dist。

7. webpack的基本功能有哪些?

  • 代码转换:TS -> JS、SCSS ->CSS......
  • 文件优化:压缩JavaScript、CSS、HTML代码,压缩合并图片等。
  • 代码分割:提取多个页面的公共代码。提取首屏不需要执行部分的代码让其异步加载。
  • 模块合并:在采用模块化的项目有很多模块和文件,需要构建功能把模块分类合成一个文件。
  • 自动刷新:监听本地源代码的变化,自动构建,刷新浏览器。
  • 代码校验:在代码被提交到仓库前需要检测代码是否符合规范,以及单元测试是否通过
  • 自动发布:更新完代码后,自动构建出上线发布代码并传输给发布系统。

8.说说webpack与grunt、gul

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值