1.webpack的核心概念

Entry:入口,Webpack进行打包的起始点(文件)
Output:出口,webpack编译打包生成的bundle(打包文件)
Loader:模块加载(转换)器,将非js、非json模块包装成webpack能理解的js模块
Plugin:插件,在 Webpack 构建流程中的特定时机插入具有特定功能的代码
Module:模块,在 Webpack眼里一切皆模块,默认只识别js文件, 如果是其它类型文件利用对应的loader转换为js模块

2.webpack配置文件的整体结构

module.exports = {
entry: '', //入口
output: {},//输出
module: {rules: []},//配置loader
plugins: [] //配置plugin
}

3.webpack模块化打包的基本流程

1. 连接: webpack从入口JS开始, 递归查找出所有相关联的模块, 并【连接】起来形成一个图(网)的结构
2. 编译: 将JS模块中的模块化语法【编译】为浏览器可以直接运行的模块语法(当然其它类型资源也会处理)
3. 合并: 将图中所有编译过的模块【合并】成一个或少量的几个bundle文件, 浏览器真正运行是打包生成的bundle文件

4.比较loader与plugin

1). loader: 用于加载特定类型的资源文件, webpack本身只能打包js。
2). plugin: 用来扩展webpack其它方面的功能, 一般loader处理不了的资源、完成不了的操作交给插件处理。

5.区别live-reload(自动刷新)与hot-realod/HMR(热模替换)

相同点:
代码修改后都会自动重新编译打包
不同点:
live-reload: 刷新整体页面, 从而查看到最新代码的效果, 页面状态全部都是新的。
Hot-reload: 没有刷新整个页面, 只是加载了修改模块的打包文件并运行,
从而更新页面的局部界面, 整个界面的其它部分的状态还在

6.webpack常用loader与plugin汇总

loader:
1.【less-loader】:用于将less文件翻译成为css
2.【css-loader】:用于将css以CommonJs语法打包到js中
3.【style-loader】:用于动态创建一个style标签,将css引入页面
备注:上述三个loader一般配合使用,最终实现:翻译less为css,以style标签形式将样式引入页面。 4.【file-loader】:提取源代码图片资源,到指定位置,可修改文件名等操作。
5.【url-loader】:与file-loader功能几乎一致,优势是可以对图片进行动态转换base64编码(控制limit属性值可以控制阈值)。
备注:上述两个loader中url-loader应用比file-loader广泛。
6.【jshint-loader】:对项目中的js语法进行检查,可选的配置项有:
emitErrors:true/false
-- emitErrors为true,检查出的错误显示为 error(错误)类信息。
-- emitErrors为false,检查出的错误显示为 warning(错误)类信息。
failOnHint: true/false,
-- failOnHint为true,当jshint检查出错误时,直接打断当前的代码的编译。
-- failOnHint为false,当jshint检查出错误时,会继续编译。
esversion: 6
--告诉jshint,不再提示新语法兼容性问题(有专门的loader解决新语法问题)
reporter: function(errors) {}
--自定义一个报告错误的函数,输出想要的内容
7.【babel-loader】:将es6语法转换为es5语法
备注:该loader的使用要借助:babel-loader babel-core babel-preset-es2015
8.【postcss-loader】:用于扩展css前缀
备注:
(1).该loader需要一个postcss.config.js配置文件。
(2).该loader要配合autoprefixer库使用。
(3).该loader使用的时机为:["css-loader","postcss-loader","less-loader"] pulgin:
1.【extract-text-webpack-plugin】:用于提取项目中的css,最终合并为一个单独的文件。
备注:上述插件需要配合:css-loader、less-loader两个loader使用,css-loader、less-loader处理之后,交给extract-text-webpack-plugin处理。
2.【html-webpack-plugin】:自动创建html文件,且自动引入外部资源。配置项如下:
title:"webpack",
filename:"index.html",
template:"./src/index.html"
//用于压缩html
minify:{
removeComments:true, //移除注释
collapseWhitespace:true}//移除换行
3.【clean-webpack-plugin】:清空webpack的输出目录,防止其他文件“乱入”。
4.【HotModuleReplacementPlugin】:热模替换(HMR)插件
备注:1.该模块必须配合webpack-dev-server模块使用,且webpack-dev-server中必须启用HMR
2.想要让指定文件支持HMR,必须要:
(1).无论是否有插件操作过该类型的资源,最终必须交给loader处理。
(2).必须在入口文件中声明使用。
5.【UglifyJsPlugin】:压缩js的插件,且可以生成sourceMap映射文件,用于方便排查错误。
6.【less-plugin-clean-css】:压缩css文件,在less-loader翻译less文件之后,该插件介入,开始压缩。

webpack面试题的更多相关文章

  1. 27、前端知识点--webpack面试题(二)

    webpack面试题总结 本文主要是对webpack面试会常被问到的问题做一些总结,且文章会不断持续更新 1.webpack打包原理 把所有依赖打包成一个 bundle.js 文件,通过代码分割成单元 ...

  2. webpack面试题(转载)

    1:webpack打包原理 把所有依赖打包成一个bundle.js文件,通过代码分割成单元片段并按需加载. 2:webpack的优势 (1)       webpack是以commonJS的形式来书写 ...

  3. 前端面试题(webpack)

    (前端面试题大全,持续更新) webpack3升级到4为什么会提升速度? webpack优化有哪些? webpack的css-loader原理讲一下 webpack压缩js css的方法

  4. 关于webpack的面试题

    随着现代前端开发的复杂度和规模越来越庞大,已经不能抛开工程化来独立开发了,如react的jsx代码必须编译后才能在浏览器中使用:又如sass和less的代码浏览器也是不支持的. 而如果摒弃了这些开发框 ...

  5. 前端面试题整理—Webpack篇

    1.什么是webpack,与grunt和gulp有啥不同 webpack是一个模块打包工具,在webpack里面一切皆模块 通过loader转换文件,通过plugin注入钩子,最后输出有多个模块组合成 ...

  6. 前端面试题整理——webpack相关考点

    webpack是开发工具,面试考点重点在配置和使用,原理理解不需要太深. 一.基本配置 1.拆分配置和merge 将公共配置跟dev和prod的配置拆分,然后通过webpack-merge对配置进行整 ...

  7. web前端面试试题总结---其他

    其他问题 原来公司工作流程是怎么样的,如何与其他人协作的?如何夸部门合作的? 你遇到过比较难的技术问题是?你是如何解决的? 设计模式 知道什么是singleton, factory, strategy ...

  8. javascript 腾讯ABS云平台面试题及面试经历

    既然说到面试前端肯定是Javascript各种问,只好各种答. 面试题肯定离不了,最近热门的Vue.js,React.js,Angular.js,Gulp,Webpack还有各种Js问题,还有令人头痛 ...

  9. 前端笔记之ES678&Webpack&Babel(下)AMD|CMD规范&模块&webpack&Promise对象&Generator函数

    一.AMD和CMD规范(了解) 1.1传统的前端开发多个js文件的关系 yuan.js中定义了一个函数 function mianji(r){ return 3.14 * r * r } main.j ...

随机推荐

  1. HDU2650 A math problem——高斯素数

    题意 给你一个数 $a+bj, \ j=\sqrt {-2}$,如果它只能被1.-1.本身和本身的相反数整除,则输出Yes,否则输出No. 分析 高斯整数 $a+bi$ 是素数当且仅当: (1)$a, ...

  2. selenium 动态元素的定位

    对于有些元素每次点击都是动态的  即每次都是不一样的  对于这种元素我们可以采用与他相关的其他静态的元素定位 比如 iframe 这个元素的id是动态的 每次都在变化 第一种就是我们观察下 是整个都是 ...

  3. 单例模式-DCL双重锁检查实现及原理刨析

    以我的经验为例(如有不对欢迎指正),在生产过程中,经常会遇到下面两种情况: 1.封装的某个类不包含具有具体业务含义的类成员变量,是对业务动作的封装,如MVC中的各层(HTTPRequest对象以Thr ...

  4. 奇技淫巧and板子

    目录 求第\(k\)大的数 求长度不小于L的子段使之和最大 ST表 \(O(1)\)实现能查询栈中最小元素 二分 树和图的深度优先遍历和广度优先遍历 树的dfs序 求树的重心 图的联通块划分 拓扑排序 ...

  5. Luogu P3228 HNOI2013 数列 组合数学

    题面 看了题解的推导发现其实并不复杂,但是如果你想要用多项式或者组合数求解的话,就GG了 其实如果把式子列出来的话,不需要怎么推导就能算出来,关键是要想到这个巧妙的式子. 设\(b_i=a_{i+1} ...

  6. k均值聚类算法原理和(TensorFlow)实现

    顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...

  7. 淘宝IP地址库获取到省市IP地址

    http://ip.aliyun.com/index.html https://ispip.clang.cn/ https://github.com/Pingze-github/local-ips 1 ...

  8. 分布式事务解决方案(一) 2阶段提交 & 3阶段提交 & TCC

    参考文档:http://blog.jobbole.com/95632/https://yq.aliyun.com/articles/582282?spm=a2c4e.11163080.searchbl ...

  9. 在导入pytorch时libmkl_intel_lp64.so找不到

    安装或者更新完pytorch后,运行不了,显示错误: (base) xu@xusu:~$ python Python (default, Dec , ::) [GCC ] :: Anaconda, I ...

  10. c++篇 cad.grx 入门,手动配置编译环境

    安装vs2010+sp1补丁; 安装浩辰2018(64位版本); 下载浩辰Grx开发的SDK,注意对应版本年份., 解压到E盘目录下, E:\grxsdk 在他们的官方用户群下载,搜sdk, 找到gr ...