Webpack高频面试题

webpack是一个模块打包工具,可以递归地打包项目中的所有模块,最终生成几个打包后的文件。区别:webpack支持代码分割,模块化(AMD,CommonJ,ES2015),全局分析loader是用来告诉webpack如何转换某一类型的文件,并且引入到打包出的文件中。plugins(插件)作用更大,可以打包优化,资源管理和注入环境变量bundle:是由webpack打包出来的文件chunk:是指webpack在进行模块依赖分析的时候,代码分割出来的代码块module:是开发中的单个模块。
摘要由CSDN通过智能技术生成

目录

1 谈谈你对webpack的看法

2 webpack的基本功能和工作原理?

前端为什么要进行打包和构建?

webpack的核心概念

webpack构建过程

webpack打包原理

什么是webpack,与gulp,grunt有什么区别

什么是entry,output?

什么是module,chunk,bundle?

如何自动生成webpack配置?

webpack如何配置单页面和多页面的应用程序?

webpack-dev-server和http服务器如nginx有什么区别?

sourceMap

13、Loader机制的作用是什么?

ExtractTextPlugin插件的作用

15、Plugin(插件)的作用是什么?

17、常见Plugins

什么是模块热更新?

HMR热模块更新

dev-server是怎么跑起来的

使用过webpack里面哪些plugin和loader

webpack中babel的实现

提取公用代码

什么是长缓存?在webpack中如何做到长缓存优化?

什么是Tree-shaking?CSS可以Tree-shaking?

webpack-dev-server 和 http服务器的区别

lazy loading(模块懒加载)

ES stage 含义

6、gulp/grunt 与 webpack的区别是什么?


Webpack高频面试题

1 谈谈你对webpack的看法

现在的前端网页功能丰富,特别是SPA(single page web application 单页应用)技术流行后,JavaScript的复杂度增加和需要一大堆依赖包,还需要解决Scss,Less……新增样式的扩展写法的编译工作。

webpack是一个模块打包工具,可以使用它管理项目中的模块依赖,并编译输出模块所需的静态文件。它可以很好地管理、打包开发中所用到的HTML,CSS,JavaScript和静态文件(图片,字体)等,让开发更高效。对于不同类型的依赖,webpack有对应的模块加载器,而且会分析模块间的依赖关系,最后合并生成优化的静态资源。
 

2 webpack的基本功能和工作原理?

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

前端为什么要进行打包和构建?

代码层面:

体积更小(Tree-shaking、压缩、合并),加载更快

编译高级语言和语法(TS、ES6、模块化、scss)

兼容性和错误检查(polyfill,postcss,eslint)

研发流程层面:

统一、高效的开发环境

统一的构建流程和产出标准

集成公司构建规范(提测、上线)

webpack的核心概念

Entry:入口,Webpack 执行构建的第一步将从 Entry 开始,可抽象成输入。告诉webpack要使用哪个模块作为构建项目的起点,默认为./src/index.js

output :出口,告诉webpack在哪里输出它打包好的代码以及如何命名,默认为./dist

Module:模块,在 Webpack 里一切皆模块,一个模块对应着一个文件。Webpack 会从配置的 Entry 开始递归找出所有依赖的模块。

Chunk:代码块,一个 Chunk 由多个模块组合而成,用于代码合并与分割。

Loader:模块转换器,用于把模块原内容按照需求转换成新内容。

Plugin:扩展插件,在 Webpack 构建流程中的特定时机会广播出对应的事件,插件可以监听这些事件的发生,在特定时机做对应的事情。
 

webpack构建过程

  • 从entry里配置的module开始递归解析entry依赖的所有module
  • 每找到一个module,就会根据配置的loader去找对应的转换规则
  • 对module进行转换后,再解析出当前module依赖的module
  • 这些模块会以entry为单位分组,一个entry和其所有依赖的module被分到一个组Chunk
  • 最后webpack会把所有Chunk转换成文件输出
  • 在整个流程中webpack会在恰当的时机执行plugin里定义的逻辑
     

webpack打包原理

将所有依赖打包成一个bundle.js,通过代码分割成单元片段按需加载

什么是webpack,与gulp,grunt有什么区别

  • webpack是一个模块打包工具,可以递归地打包项目中的所有模块,最终生成几个打包后的文件。
  • 区别:webpack支持代码分割,模块化(AMD,CommonJ,ES2015),全局分析

什么是entry,output?

  • loader是用来告诉webpack如何转换某一类型的文件,并且引入到打包出的文件中。
  • plugins(插件)作用更大,可以打包优化,资源管理和注入环境变量

什么是module,chunk,bundle?

bundle:是由webpack打包出来的文件

chunk:是指webpack在进行模块依赖分析的时候,代码分割出来的代码块

module:是开发中的单个模块

如何自动生成webpack配置?

可以用一些官方脚手架

  • webpack-cli
  • vue-cli
  • // 首先安装
    npm install -g @vue/cli
    // 新建项目hello
    vue create hello
    

  • nuxt-cli
  • // 确保安装了npx,npx在npm5.2.0默认安装了
    // 新建项目hello
    npx create-nuxt-app hello
    

    webpack如何配置单页面和多页面的应用程序

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
webpack和gulp是两个常用的构建工具,用于优化和打包前端资源。它们在一些方面有着不同的特点。 Webpack是一个现代化的模块打包工具,它将所有文件都视为模块,并通过加载器(loader)来解析和转换这些文件。webpack的主要目标是将多个模块打包成一个或多个文件,以便在浏览器中使用。它具有强大的模块化支持和灵活的配置选项,可以处理各种类型的文件,如JavaScript、CSS、图片等。同时,webpack内置了一些功能,如代码分割、懒加载等,使得开发者可以更好地优化和管理前端资源。 Gulp是一个基于任务的构建工具,它使用流(stream)来处理前端资源。gulp通过编写任务(task)来定义源文件的处理过程,并将处理结果输出到指定目录。它可以进行文件的合并、压缩、重命名等操作,并且可以自定义任务的执行顺序。相对于webpack,gulp更加灵活,可以处理更多种类的任务,如自动化测试、文件的复制和移动等。但是,gulp相对于webpack来说,对于模块化的支持相对较弱,需要借助其他插件来实现。 综上所述,webpack和gulp在功能和使用方式上有所不同。webpack更适用于模块化的项目,可以更好地处理复杂的依赖关系和模块管理;而gulp更适合处理一些简单的任务和流程,具有更大的灵活性。在面试中,常常会涉及到webpack和gulp的使用和配置,以及它们之间的区别和优劣势。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [webpack-interview-questions:可用于准备面试或测试知识的Webpack问题答案](https://download.csdn.net/download/weixin_42121754/15101046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [webpack 常见面试题](https://blog.csdn.net/write_bug_job/article/details/124355413)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [面试官常问 webpack 面试题](https://blog.csdn.net/weixin_59519449/article/details/123983352)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值