获得徽章 0
- 周(摸)报(鱼)固定格式:
1. 持续优化xxx
2. 重构了xxx
3. 梳理xxx,总结xxx
4. 排查xxx问题
5. 改进了xxx逻辑,性能得到提升
6. 通过 xxx 降低了 xxx 至 xxx
7. 为了 xxx 重新设计了 xxx
8. 为了 xxx 通过 xxx 完成了 xxx
9. 通过 xxx 优化了 xxx 为 xxx
10. 为了 xxx 将 xxx 应用到了 xxx
11. 通过 xxx 提高了 xxx 至 xxx
12. 为了 xxx 通过 xxx 将 xxx 集成
13. 为了 xxx 通过 xxx 成立了 xxx展开733 - 目标驱动和问题驱动有什么区别?
目标驱动的前提是需要设定一个目标,你要知道自己要什么,然后以目标为中心,寻找达成目标的方法。
需要人?那就去招人,去组建团队。需要资源?那就找老板要,或者自己寻找。依赖别人?那就拉人解决,去跟进,去推动。遇到问题?那就去解决,去学习,去请教高人。
一旦有了目标,你就有了方向和动力,你所做的一切都是为了达成目标,想尽一切办法,不达目标不罢休。
这就是目标驱动。
那问题驱动呢?
问题驱动不需要明确的目标,只需要去发现问题。生活中、工作中,到处都是问题。
一旦发现问题,我们要做的第一件事就是分析问题,找出问题的根因。
为什么我的首页加载那么慢?为什么我的App已经闪退?为什么这段路老是发生车祸?为什么最近头发越来越少?
不断地追问为什么,并且不断地回答,你就会找到问题的原因。如果回答不了,大概率就是你存在知识盲区,这时就需要学习和请教高人。
学习的目标是为了解决问题,缺什么学什么,有针对性地学习,解决完问题立马停止深入,继续解决下一个问题。当所有子问题都解决了,最初的问题自然也就解决。
这就是问题驱动。
两种做事风格并不是互斥的,而是相互促进的,达成目标的过程中会遇到问题,解决问题的过程中也需要设定目标,只有把这两种做事方式融合起来,才能让自己成长得更快,才能把事情做得更好。展开68 - 【你不知道的!web前端奇淫技巧】一分钟搞懂Vue双向绑定原理: Object.defineProperty
比如, 定义了 Object.defineProperty(o, 'name', {}) ,
那么当你访问o.name 的时候,会自动调用get 方法;
当赋值 o.name = xxx 的时候,会自动调用set 方法。
相当于 js 这门语言给你提供了一个后门,你调用o.name 会在背后做一些事情。
所谓数据双向绑定,就是 js 对象的数据变了,页面元素的值会发生变化。
这就是数据双向绑定的原理展开172 - react 简单而美好:ReactDOM 源码对选区的处理(三),这里讲一些基础知识。
先回顾下前面的内容。ReactDOM 源码对选区的处理(一) 之 怎么获取偏移量:
juejin.im
ReactDOM 源码对选区的处理(二) 之 通过偏移量和 document.activeElement 找到选区的目标节点和符合原生 api 的偏移量:
juejin.im
为什么需要恢复选区功能:
This is useful when performing operations that could remove dom nodes and place them back in, resulting in focus being lost.
图1 是 react 对选区兼容性的处理:
原生 DOM api 对部分 input 类型 和 textarea 开放了选区的属性和接口,参见:html.spec.whatwg.org。
ReactDOM 使用 activeElement 和 getSelection 扩大了选区功能的支持范围:支持具有编辑功能的 div 节点
图2 是使用 document.activeElement 获取到不同的活跃元素developer.mozilla.org
划选了 input, textarea, 具有 contenteditable 的 div内部的全部或部分内容,那 document.activeElement 是这个元素本身
划选了普通 div 内部的内容(含多个div夸选),那 document.activeElement 是 body
展开33