在诸多浏览器时间中, 有一类需要特殊处理. 那就是容易过度触发的事件. 例如: scroll, resize, mousemove… 为了防止这类事件的频繁触发. 我们就可以对事件处理函数进行防抖和节流的处理 ~
loader vs plugin
移除inline-block间隙的方法
由于编写代码的时候难免会有间隔设置为 inline-block 的元素就会出现间隔, 解决方法有以下几种:
- 去掉元素之间的空格, 所有的代码都紧挨着写
- 利用 html 注释, 所有边间质检的空隙都用注释填充
- 取消标签闭合, 这样空隙的部分就算到标签里边了. 经过我的测试子元素是 a 标签的时候是好使的. 但是 span 标签 GG 了
1
2
3
4
5
6
7
8
9
10<style>
a {
display: inline-block;
}
</style>
<div>
<a>你好
<a>我的间距不见了
<a>哈哈哈, 气不气
</div> - 在父容器设置 font-size: 0; 也可以实现不展示间隔
重绘和回流
webpack 的构建流程
简述 webpack 的构建流程
- 初始化参数: 从配置文件和 shell 语句中读取与合并参数, 得出最终的参数
- 开始编译: 基于第一步的参数初始化 Compiler 对象. 加载所有配置的插件, 执行对象的 run 方法开始编译
- 确定入口: 根据配置文件找到所有的入口文件
- 编译所有模块: 从入口文件触发, 调用所有配置了 loader 进行模块编译. 找出该模块依赖的模块递归处理. 直到处理完成所有的模块
- 完成编译模块: 在经过第四步的处理后得到了每个模块编译的结果, 并能获取到各个模块之间的关系.
- 输出资源: 根据入口文件和模块间的依赖关系, 组装成一个个包含多个模块的 chunk 再把每个 chunk 转换成一个个单独文件加入到输出列表. 这里是可以修改输出资源的最后机会
- 输出完成: 确定好输出内容后, 根据输出文件路径和文件名. 把文件写入到文件系统中
在上述各个步骤中, webpack 都会广播特定的事件. 插件在监听到关注的事件以后就会启动自生的逻辑. 调用 webpack 提供的 api 以影响最终生成的结果