大前端周刊 第11期 (本期小编:胡国伟)

Show me the code

截流(throttle)

概念理解:固定函数执行的速率。
使用场景:DOM 事件绑定,短时间内触发多次绑定事件造成性能问题,如 onresize,onscroll等,使用节流函数可确保在指定时间内只触发一次。
简单实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
let throttle = (func, wait) => {
let context, args;
let previous = 0;

return function () {
let now = +new Date();
context = this;
args = arguments;
if (now - previous > wait) {
func.apply(context, args);
previous = now;
}
};
};

防抖(debounce)

概念理解:强制一个函数在某个连续时间段内只执行一次,哪怕它本来会被调用多次。
使用场景:

  1. 表单远程搜索,键盘多次输入取最后一次输入值作为查询关键词。
  2. 下拉菜单的延时消失。

简单实现:

1
2
3
4
5
6
7
8
9
10
11
let debounce = (func, wait) => {
let timeout;
return function () {
let context = this;
let args = arguments;
clearTimeout(timeout);
timeout = setTimeout(function () {
func.apply(context, args)
}, wait);
};
};

工具和模块

推荐功能强大的HTTP抓包调试工具:Fiddler。假如有这样一个场景,线上突然出现bug,而你正在休假、手头又没有源码,但又急需你参与问题排查,怎么办?Fiddler 便是你的救🔥利器。

  1. 官网:http://www.telerik.com/fiddler
  2. 插件(官方&第三方):http://www.telerik.com/fiddler/add-ons
  3. 快速上手:十分钟学会 Fiddler
  4. 视频教程:http://www.imooc.com/learn/37
  5. 系列文章

文章推荐

  • 代码覆盖率工具 Istanbul 入门教程
    使用 Mocha 进行单元测试时,还需要了解测试的覆盖程度,这个指标就叫做”代码覆盖率”(code coverage)。这篇文章非常全面地介绍了Istanbul,让你轻松上手。深入了解:nyc

  • 深入浅出浏览器渲染原理
    对于 HTTP 协议和浏览器渲染原理都是理解容易但不好讲明白,那么为什么不采用 Node.js 来阐述呢?以实践的方式、最简单的方式来向你展示不好讲的东西,对于 Node.js 开发者和大前端开发来说都是非常实用的。

  • 剖析Vue实现原理 - 如何实现双向绑定mvvm

    1. 了解vue的双向数据绑定原理以及核心代码模块
    2. 了解如何实现双向绑定
  • 不用call和apply方法模拟实现ES5的bind方法
    这个问题是对JavaScript基本功很好的一个检测,看JavaScript掌握的怎么样以及平时有没有去深入研究一些方法的实现,简而言之,就是有没有折腾精神。

  • 通过ES6 Generator函数实现异步操作
    文章对 Generator函数实现异步进行了深入的讲解,最后使用 promise和 generator这样的模式实现异步操作,对于实现的过程进行深入细致的分析。

  • 你了解CSS设计模式吗?
    简单来了解下CSS设计模式:

    1. BEM全称(block、element、modifier)是Yandex 团队提出的CSS Class命名法
    2. OOCSS全称(Object Oriented CSS)由Nicole Sullivan提出的css理论
    3. SMACSS是Jonathan Snook的一个CSS框架
    4. Atomic Design,原子设计
  • 我接触过的前端数据结构与算法
    作者总结了前端常常碰到的算法,主要涉及递归、节流、数组去重、栈和堆、图像处理等。代码示例较为清晰,对于初学者还是很有帮助的,比较赞同作者的观点:算法的目的是用最小的时间和最小的空间解决问题。但是有时候不用太拘泥于一定要最优的答案,能够合适地解决问题就是好方法,而且对于不同的应用场景可能要采取不同的策略。
  • JavaScript 中 4 种常见的内存泄露陷阱
    虽然Javascript有内存自动回收机制,但这并不以为着js开发使完全不用关心内存管理。文中详细介绍了什么是内存泄漏和js中容易引起内存泄漏的点,并提供了使用Chrome分析内存的方法。

招聘

TalkingData DTU 可视化团队招聘:

  • 资深前端工程师
  • 前端实习生

简历投递:

1
2
const email = 'xiang.wang#tendcloud.com'.replace('#', '@');
console.log(email);