webpack面试题

news2025/6/10 15:31:58
面试题:webpack介绍和简单使用
一、webpack(模块化打包工具)
    1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们,最后打包成一个或多个浏览器可识别的js文件
    2. 通过设置webpack.config.js 的配置,由于webpack是基于Node构建的,webpack配置文件中所有的合法node语法都可以用
二、安装webpack
​
    2.1先全局安装
        cnpm install webpack -g
        cnpm install webpack-cli -g
        
        npm install webpack -g
        npm install webpack-cli -g
        
        yarn global add webpack
        yarn global add webpack-cli
        
    2.2 测试版本
        webpack -V
        webpack-cli -V
    
三、简单用一下webpack
    webpack==》本身之前是打包js
        如果要打包:html、css···需要借助一些东西
        
    1、进入项目目录,随便创建一个js文件
        ./src/index.js
    2、在该目录中下载wepack
        cnpm install'webpack -S
    3、在终端执行:webpack命名就会打包成功 

面试题:webpack的入口和输出
// Entry(入口):Webpack 从哪里开始构建依赖图。
module.exports = {
   entry: './src/index.js',
};
​
// Output(输出):Webpack 打包后的文件存放位置。
module.exports = {
  output: {
     path: path.resolve(__dirname, "public"),
     filename: "zhangsan.js",
  },
};

面试题:入口多种配置方式
一、多文件打包成一个文件
    问题:多个入口文件==》单文件出口
    解决:
        var path = require('path');
        module.exports = {
            entry: ['./src/a.js','./src/b.js'],
            output:{
                path: path.resolve(__dirname, 'dist'),
                filename:'main.js',
            }
         }
二、多文件打包成多文件
    问题:多个入口文件==》多文件出口
    解决:
        var path = require('path');
        module.exports = {
            entry: {
                a:'./src/a.js',
                b:'./src/b.js',
            },
            output:{
                path: path.resolve(__dirname, 'dist'),
            }
         }
 
面试题:loader的概念
一、loader是什么
    webpack 只能理解JavaScript 和JSON文件,这是webpack开箱可用的自带能力。loader让webpack能够去处理其他类型的文件,并将它们转换为有效模块,以供应用程序使用,以及被添加到依赖图中。
​
二、loader的配置
    写法:
module:{
            rules:[
                test: /\.css$/,
                use:['style-loader','css-loader'],
            }],
        }
    1、test属性,识别出哪些文件会被转换。
    2、use属性,定义出在进行转换时,应该使用哪个loader。
    
****一定要记住下载loader

面试题:压缩打包HTML
插件:html-webpack-plugin
​
使用步骤:
​
    1.下载
        cnpm install html-webpack-plugin -S
        
    2.引入
        var HtmlWebpackPlugin =
        require('html-webpack-plugin');
        
    3.配置
        plugins:[
            new HtmlWebpackPlugin({
            })
        ]
        
    4.配置参数说明
        4.1 指定模版页面
            template:'./src/index.html',
            
        4.2 修改默认输出文件名
            filename:'xx.html'
        
        4.3 允许插入到模板中的一些chunk
            chunks:['jquery','xx']
            
        4.4 配置不允许注入的thunk
            excludeChunks:['xx']
            
    5.多页面打包
        需要创建多个newHtmlWebpackPlugin

面试题:HTML加入图片
一、加载图片的loader   ==>     file-loader
{
    test: /\.(png|jpg|jpeg|gif)$/,
    use:[{
        loader:'file-loader',
        options:{
            esModule:false,
            outputPath:'img/'
        }
    }]
}
二、让html支持图片的loader  ==>     html-withimg-loader
{
    test:/\.html$/,
    use:'html-withimg-loader'
}

面试题:HTML加入字体图标
添加字体图标:
{
    test: /\.(eot|svg|ttf|woff|woff2)$/,
    use:'file-loader?name=./fonts/[name].[ext]'
}

面试题:单独分离CSS压缩打包
压缩打包css
    1.单独抽离css文件
        1.1下载插件:
            :mini-css-extract-plugin
            
        1.2 引入插件:
            Var MiniCssExtractPlugin
            require('mini-css-extract-plugin');
            
        1.3修改loader:
            {
                test:/\.css$/,
                use: [MiniCssExtractPlugin.loader,'css-loader']
            }
            
​
        1.4使用插件
            plugins:[
                new MiniCssExtractPlugin()
            ]
                
    2.压缩css文件
        插件:optimize-css-assets-webpack-plugin -S

面试题:webpack的loader和plugin的区别?
	Loader:用于模块源码的转换,loader描述了webpack如何处理非JS模块,并且在buld中引入这些依赖。loader可以将文件从不同的语言转换为JS,或者将内联图转换为data URL。比如:CSS-Loader,Style-Loader等

	Plugin:用于解决loader无法实现的其实事情,从打包优化和压缩,到重新定义环境变量,功能强大到可以用来处理各种各样的任务。webpack提供了很多开箱即用的插件,例如:CommonPlugin主要用于提取第三方库和公共模块,避免首屏加载的bundle文件,或者按需加载的bundle文件体积过大,导致加载时间过长,是一把优化的利器。而在多页面应用中,更是能够为每个页面文件的应用程序共享代码创建的bundle

面试题:怎么使用webpack对项目进行优化?
构建优化:
​
    1、减少编译体积ContextReplacementPugin、lgnorePlugin、babel-plugin-import、babel-plugin-transform-runtime。
​
    2、并行编译happypack、thread-loader、uglifyWebpackPlugin开启并行
​
    3、缓存cache-loader、hard-source-webpack-plugin、uglifyjsWebpackPlugin开启缓存、babel-loader开启缓存
​
    4、预编译dllWebpackPlugin&&DllReferencePlugin、auto-dll-webpack-plugin
​
性能优化:
​
    1、减少编译体积Tree-shaking、Scope-Hositing
​
    2、hash缓存webpack-md5-plugin
​
    3、拆包 splitChunksPlugin、import()、require.ensure

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2406771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作: 压缩包下载:http://download.redis.io/releases 1. 上传压缩包,并进入压缩包所在目录,解压到目标…

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…

链式法则中 复合函数的推导路径 多变量“信息传递路径”

非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y))​ 来全面说明。我们会展示其全微分形式(偏导…

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…

高分辨率图像合成归一化流扩展

大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…

算法—栈系列

一&#xff1a;删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置&#xff1a;遍历整个矩阵&#xff0c;找出所有值为 0 的元素&#xff0c;并将它们的坐标记录在数组zeroPosition中置零操作&#xff1a;遍历记录的所有 0 元素位置&#xff0c;将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…

向量几何的二元性:叉乘模长与内积投影的深层联系

在数学与物理的空间世界中&#xff0c;向量运算构成了理解几何结构的基石。叉乘&#xff08;外积&#xff09;与点积&#xff08;内积&#xff09;作为向量代数的两大支柱&#xff0c;表面上呈现出截然不同的几何意义与代数形式&#xff0c;却在深层次上揭示了向量间相互作用的…

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法&#xff0c;由约翰冯诺伊曼在1945年提出。其核心思想包括&#xff1a; 分割(Divide)&#xff1a;将待排序数组递归地分成两个子…

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目&#xff0c;集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…

Mac flutter环境搭建

一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…

Linux-进程间的通信

1、IPC&#xff1a; Inter Process Communication&#xff08;进程间通信&#xff09;&#xff1a; 由于每个进程在操作系统中有独立的地址空间&#xff0c;它们不能像线程那样直接访问彼此的内存&#xff0c;所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构&#xff1a;由肠系膜上静脉和脾静脉汇合构成&#xff0c;是肝脏血液供应的主要来源。淤血后果&#xff1a;门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血&#xff0c;引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…