写了这么多年 CSS,经常看到有人把 :hover 和 ::before 混在一块叫“伪类”。虽然浏览器很宽容,不管你写一个冒号还是俩冒号它都能认出来并且渲染,但强迫症发作的时候,还是想把它们理清楚。
这里顺便记一下这俩玩意儿在实际开发中能搞出的常用操作。
写了这么多年 CSS,经常看到有人把 :hover 和 ::before 混在一块叫“伪类”。虽然浏览器很宽容,不管你写一个冒号还是俩冒号它都能认出来并且渲染,但强迫症发作的时候,还是想把它们理清楚。
这里顺便记一下这俩玩意儿在实际开发中能搞出的常用操作。
这两天团队里出了个线上问题:有个新来的同学在处理一个紧急 Bug 时,不仅把测试分支的代码合到了主干,还在操作不当时用 git push -f 覆盖了远程分支。等我们发现的时候,线上已经带着几个没测完的功能跑了半个小时了。
最后靠着 git reflog 和一些底层的操作成功恢复了代码。趁着周末有空,我把日常开发中真正会救命的几个 Git 骚操作复盘一下。别再把 Git 当个机械的 add/commit/push 机器了。
小程序刚发布没多久(2017年1月),最近把开发文档和一些内部分享资料翻了一遍,发现它的渲染架构设计挺有意思的,跟普通套个 WebView 的混合应用完全不同。这里整理一下我的理解。
Vuex 0.x / 1.x 刚出来那会儿(2015 年底),整个中文社区几乎没有什么资料,只能啃官方文档和 Flux 相关的文章。用了一段时间,觉得 Vuex 的设计有很多值得深想的地方,不只是”把共享状态放一起”那么简单。
用 Vue 一段时间了,一直有个问题没搞清楚:为什么改 this.someObj.newProp = 'xxx' 不触发视图更新,但改 this.someArr.push() 就会更新?为什么要用 this.$set?
带着这些问题去翻了 Vue 2 的源码,弄懂了响应式系统的基本原理,写篇记录。