前端概念可视化

前言

一句老话说的好:一图胜千言。这句话对学前端也适用,有时候,一个demo被一大堆文字有用的多。下面我就给大家总结几个。由于文中引用的部分项目仅支持http,下面的iframe中如果出现空白,请移步本文的http地址查看👉http://www.cnblogs.com/imgss/p/10583107.html ,或者直接点击给出的原文链接。

防抖/节流

将鼠标在灰色方块中移动,可以观察正常触发,防抖(debounce)和节流(throttle)后绘制出的图像的区别。原项目地址

从图中可以看出,防抖的作用是,在若干秒后如果不再有事件(如滚动,mousemove等)发生,就触发处理函数,如果在这期间又发生了新的事件,则重新计时;节流则是每隔若干秒就触发一次,只是将原来的高频率降低了。

'=='是怎么计算的

下面的demo给出了当使用 ==时,js引擎是如何对两边的值进行隐式转换,最终得出一个true或者false的,原文链接

规则:以 x==y 为例子

  1. 如果x和y的类型相同
    1.a. 返回 x === y的结果.
  2. 如果x是 null 而且y 是 undefined, 返回 true
  3. 如果 x 是 undefined 而 y 是 null, 返回 true
  4. 如果 x 是 number 而 y 是 string, 将 y 转换成 number 再比较.
  5. 如果 x 是 string 而 y 是 number, 将 x 转换成 number 再比较.
  6. 如果 x 是 布尔值, 将 x 转换成 number 再比较.
  7. 如果 y 是 布尔值, 将 y 转换成 number 再比较.
  8. 如果 x 是 number,string,symbol三种类型之一, typeof y是 object, 将y转换成原始类型再比较.
  9. 如果 y 是 number,string,symbol三种类型之一, typeof x是 object, 将x转换成原始类型再比较.
  10. 返回 false.

于是,有个下面这个"计算器",你就知道为什么[] == ![]

ease-in,ease-out,cubic-bezier

无论是css还是js动画库,绕不开的一个概念就是缓动函数。linear,ease-in,ease-out分别会对动画产生什么效果?下面这个网站将缓动函数之间的区别可视化。

GreenSock提供了更复杂的缓动函数及可视化,地址:https://greensock.com/ease-visualizer

bezier曲线

二阶,三阶贝塞尔曲线的区别是什么,控制点的作用是什么?可以把玩一下下面这个demo,给定3个及以上控制点,生成你想要的曲线。原文链接

使用方法也很简单,首先点击3个及以上的点,然后点击 绘制 即可看到生成bezier曲线的动画。

进阶阅读:A Primer on Bézier Curves

svg中的path -- m,h,v,l,z,q,t,c,s

svg <path>里的那些一个字母的命令看着头昏脑涨?M是啥,L又是啥?下面这个项目来拯救你。地址

配合张鑫旭大神这篇文章食用更佳。

这个svg-editor项目也很有帮助https://yqnn.github.io/svg-path-editor/

函数调用栈

当js引擎执行一个函数时,函数调用栈是什么?js从主函数开始,如果函数中又有函数被调用,这个函数入栈,调用结束后出栈。

1_E3zTWtEOiDWw7d0n7Vp-mA.gif

astExplorer

babel是如何把es6,转换成es5的,vue是怎么把模板转换成render函数的,AST在其中起着重要作用。https://astexplorer.net/

算法可视化

https://algorithm-visualizer.org/
大家还见过哪些有助于理解前端概念的网站呢,欢迎在评论区留言哦🦉

posted @ 2019-04-08 14:11  饭特稠  阅读(1988)  评论(0编辑  收藏  举报