面试常问的webpack知识点

  • 什么是webpack

    • webpack是一个JavaScript静态模块打包工具
    • webpack里面一切文件皆是模块,通过loader转换文件,通过plugin注入钩子
    • 最终输出有多个模块组合的文件,webpack专注构建模块化项目
    • webpack可以看做模块打包机:所做的事情
      • 分析你的项目结构
      • 找到JavaScript模块以及其他的一些浏览器不能直接运行的扩展语言(scss,TS)
      • 将其打包为合适的格式以供浏览器使用
  • webpack的优点

    • 专注于处理模块化的项目, 能做到开箱即用,一步到位
    • 通过plugin扩展,完整好用又不失灵活
    • 通过loader扩展,可以让webpack把所有类型的文件都解析打包
    • 区域庞大活跃,经常引入紧跟时代发展的新特性,能为大多数场景找到已有的开源扩展
    • 使用场景不局限与web开发
    • 提供了更好的开发体验
  • webpack的构建流程是什么? (从读取配置到输出文件这个过程开始)

    • webpack的运行流程是一个串行的过程, 从启动到结束回依次执行以下流程
      • 初始化参数, 从配置文件读取与合并参数 , 得到最终参数
      • 开始编译 , 用上一步得到的参数初始化compiler对象,加载所有配置的插件,开始执行编译
      • 确定入口 , 根据配置中的entry找到所有的入口文件
      • 编译模块 , 从入口文件触发,调用所有的loader对模块进行翻译,再找出该模块依赖的模块,在递归本步骤直到所有的入口依赖的文件都经过本步骤处理
      • 完成模块编译 在经过上一步所有的loader翻译所有模块后,得到每个模块被翻译后的最终内容以及它们之间的依赖关系
      • 输出资源 根据入口和模块之间的依赖关系,组装成一个一个包含多个模块的chunk,再把每个chunk转换成一个单独的文件加入到输出列表
    • 在以上过程中,webpack会在特定的时间点广播出特点的事件,插件在监听到感兴趣的事件后会执行特定的逻辑,并且插件可以调用webpack提供的API改变webpack的运行结果
  • 常见的loader(加载器)

    • file-loader 把文件输出到一个文件夹中,在代码中通过相对URL去引入输出的文件
    • URL-loader 和file-loader类似,但是能在文件很小的情况下以base64的方式把文件内容注入到代码中去
    • source-map-loader 加载额外的source map 文件 , 以方便断点调试
    • image-loader 加载并且压缩图片文件
    • babel-loader 把ES6转换为ES5
    • css-loader 加载css , 支持模块化 压缩 ,文件导入等特性
    • style-loader 把css代码注入到JavaScript中,通过DOM操作去加载css
    • eslint-loader 通过ESlint检查Javascript代码
  • Loader(加载器)和Plugin(钩子,插件)的区别

    • 作用不同
      • loader直译为"加载器",webpack将一切文件视为模块,但是webpack原生是只能解析js文件,如果想将其他文件也打包的话,就会用到loader.所以loader的作用是让webpack拥有了加载和解析非JavaScript的能力.
      • Plugin直译为"插件",也叫做钩子,Plugin可以扩展webpack的功能, 让webpack具有更多的灵活性. 在webpack运行的生命周期中会广播出许多事件, plugin可以监听这些事将,在合适的时机通过webpack提供的API改变输出结果
    • 用法不同
      • Loader在module.rules中配置,也就是说他作为模块的解析规则而存在,类型为数组,每一项都是一个Object,里面描述了对于什么类型的文件,使用什么加载和使用的参数
      • Plugin在plugins中单独配置,类型为数组,每一项是一个plugin的实例,参数都通过构造函数传入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值