webpack面试题学习

说说你对webpack的理解?解决了什么问题?

webpack面试题学习_第1张图片

webpack面试题学习_第2张图片

webpack面试题学习_第3张图片

说说webpack的构建流程?

webpack面试题学习_第4张图片

说说webpack中常见的Loader?解决了什么问题?

webpack面试题学习_第5张图片

说说webpack中常见的Plugin?解决了什么问题?

webpack面试题学习_第6张图片

说说Loader和Plugin的区别?编写Loader,Plugin的思路?

webpack面试题学习_第7张图片

实现loader的模板如下:

// 导出一个函数,source为webpack传递给loader的文件源内容
module.exports = function(source) {
    const content = doSomeThing2JsString(source);
    
    // 如果 loader 配置了 options 对象,那么this.query将指向 options
    const options = this.query;
    
    // 可以用作解析其他模块路径的上下文
    console.log('this.context');
    
    /*
     * this.callback 参数:
     * error:Error | null,当 loader 出错时向外抛出一个 error
     * content:String | Buffer,经过 loader 编译后需要导出的内容
     * sourceMap:为方便调试生成的编译后内容的 source map
     * ast:本次编译生成的 AST 静态语法树,之后执行的 loader 可以直接使用这个 AST,进而省去重复生成 AST 的过程
     */
    this.callback(null, content); // 异步
    return content; // 同步
}

实现plugin的模板如下:

class MyPlugin {
    // Webpack 会调用 MyPlugin 实例的 apply 方法给插件实例传入 compiler 对象
  apply (compiler) {
    // 找到合适的事件钩子,实现自己的插件功能
    compiler.hooks.emit.tap('MyPlugin', compilation => {
        // compilation: 当前打包构建流程的上下文
        console.log(compilation);
        
        // do something...
    })
  }
}

说说webpack的热更新是如何做到的?原理是什么?

webpack面试题学习_第8张图片

说说webpack proxy工作原理?为什么能解决跨域?

webpack面试题学习_第9张图片

说说如何借助webpack来优化前端性能?

webpack面试题学习_第10张图片

如何提高webpack的构建速度?

webpack面试题学习_第11张图片

与webpack类似的工具还有哪些?区别?

webpack面试题学习_第12张图片

(图片需要右击,选择在新标签页打开图像,放大了看)

你可能感兴趣的:(webpack,webpack,学习,前端,笔记,性能优化,经验分享,总结)