webpack一面基础面试题

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

代码层面

  1. 体积更小 (Tree-shaking, 压缩, 合并) , 加载更快
  2. 编译高级语言或语法 (ES6+, 模块化, TS, scss)
  3. 兼容性和错误检查 (Polyfill, postcss, eslint)

研发流程层面

  1. 统一高效的开发环境
  2. 统一的构建流程和产出标准
  3. 集成公司构建规范(提测, 上线等)

module chunk bundle的区别?

  1. module是各个源码文件, webpack中一切皆模块
  2. chunk是多模块合并成的, 在内存中还未产出的代码块, 比如entry import() splitChunk里都可以定义chunk
  3. bundle是最终产出的文件, 每个chunk打包完后都产出bundle文件

loader和plugin的区别?

loader模块转换器, 如less转换成css
plugin扩展插件, 如HtmlWebpackPlugin


babel和webpack的区别?

babel 是 js新语法编译工具, 不关心模块化
webpack是 打包构建工具, 是多个 loader plugin的集合


如何产出一个lib (第三方模块)?

output.library
产出lib


babel-polyfill和babel-runtime的区别?

babel-polyfill会污染全局
babel-runtime不会
产出第三方lib要用babel-runtime


webpack如何实现懒加载?

import()
结合Vue 和 React 异步组件
结合Vue-router React-router异步加载路由


为何Proxy不能被polyfill?

可以被polyfill的:

class可以用 function 模拟
Promise可以用 callback 来模拟
但Proxy的功能用 Object.defineProperty 无法模拟


webpack优化构建速度 (可用于生产环境)?

优化babel-plugin
IngorePlugin
noParse
happypack
ParalleUglifyPlugin


webpack优化构建速度 (不用于生产环境)?

自动更新
热更新
DllPlugin


webpack优化产出代码?

小图片base64编码
bundle加hash
懒加载
提取公共代码
使用CDN
IgnorePlugin
使用production
Scope Hosting


Babel入门配置

Babel入门配置


Webpack入门配置

Webpack入门配置

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值