Skip to content

Latest commit

 

History

History
49 lines (28 loc) · 4.21 KB

012.md

File metadata and controls

49 lines (28 loc) · 4.21 KB

Re:Tech FE Weekly Vol.012

本期文章

不管是 Vue 还是 React,其为了比较虚拟 DOM 节点的变化,实现最小量更新,均利用了 diff 算法,本文就与老铁们一起来看看 diff 算法。

webpack 5 是 2020 年发布的,webpack 4 是 2018 年发布的,在 webpack 4 之上也做出了挺多的改变,比如,添加了 cache 的支持,模块联邦新玩意......

很多人都重写过原生方法,但 Evil.js 能引起讨论是因为作者很聪明,但除了作恶之外,也可以做更多有价值的东西,比如把埋点写入 fetch 方法里,给 localStorage 增加过期时间什么的

源码很短,建议每个方法都读一下,顺道思考出现这种偶发性 bug 该如何定位 https://github.com/duo001/evil.js/blob/master/index.js

最朴实无华的下毒手法就是直接替换函数,比如 evil.js 中,给 JSON.stringify 下毒了,把里面的 I 换成了 l ,每周日 prmise 的 then 方法有 10%的概率不触发,只有周日能触发着实有点损了, 并且 npm 的报名就叫 lodash-utils,看起来确实是个正经库,结果被下毒

挺有意思的,给代码下毒

对于一些比较确定的、短期内可能就会扩展,或者需求改动对代码结构影响比较大的情况,或者实现成本不高的扩展点,在编写代码的时候之后,我们就可以事先做些扩展性设计。

但对于一些不确定未来是否要支持的需求,或者实现起来比较复杂的扩展点,我们可以等到有需求驱动的时候,再通过重构代码的方式来支持扩展的需求

为了更好地支持扩展性,我们对代码进行了重构,重构之后的代码要比之前的代码复杂很多,理解起来也更加有难度。很多时候,我们都需要在扩展性和可读性之间做权衡。在某些场景下,代码的扩展性很重要,我们就可以适当地牺牲一些代码的可读性;在另一些场景下,代码的可读性更加重要,那我们就适当地牺牲一些代码的可扩展性。

友情链接

订阅

这个周刊每周一发布,同步更新在github、微信公众号。