掘友等级
获得徽章 0
如果你因为工作而感到不开心,那我就带你旷工,去吃一份不被装在塑料盒里的饭,去喝一杯从店员手里接过来的奶茶,去街上乱走,去看一下下午六点前的天空,等快要到下班时间了,我就带你去冒险,我们翻进老板的家,喝光他冰箱里的饮料,吃光他抽屉里的零食,我们把垃圾扔得到处都是,我躺在地上问你开心吗,你说开心,可是老板快回来了。这时我会告诉你这儿其实是我家,你也不用担心因为旷工而扣薪,因为今天是周天
IntersectionObserver API中的rootMargin参数怎么设置都没作用,文档说类似CSS margin!他爷爷的就是被这句话给坑了,rootMargin和margin只是语法类似,对于尺寸的影响却是相反的。元素设置margin正值,尺寸是变小的,但是rootMargin设置margin正值,检测范围是变大的。原来没起作用是正负弄反了。
大家好,我是《JavaScript高级程序设计(第4版)》译者李松峰(为之漫笔),现在正在翻译JavaScript: The Definitive Guide, 7th Edition(也就是“犀牛书”新版)。
我喜欢技术翻译。大概2006年的时候,因为学习网页开发(当前还没有前端这个职业)开始走上技术图书翻译的道路。到现在已经不知道翻译出版了多少本书了,大概每年都有那么一两本或两三本。(有兴趣的同学可以查下:lisongfeng.cn。)
一开始我的英语并不好,翻译起来特别吃力。起点虽低,但是这件事我很执著,周末经常一翻译就是一整天加一晚上。翻译不仅让我学到喜欢的技术还能提升英语阅读水平。值得一提的是,我最早翻译了jQuery的文档。
默默翻译了三本技术书之后,我终于鼓足勇气,开着借来的大众桑塔纳轿车拜访了几家有名的计算机图书出版社。很快就跟中国电力出版社签订了翻译《PHP经典实例》的合同。从此一发而不可收拾……甚至还辞职在家翻译了几个月。因翻译与书结缘,也改变了我的职业生涯。
本来我是非常喜欢写代码的,结果2008年开始踏进出版社的大门,一头扎进了计算机图书的海洋,先后在清华大学出版社第五事业部和人民邮电出版社图灵教育任职。在此期间,我接手翻译了《JavaScript高级程序设计(第3版)》。这本书因为前端的迅猛发展而非常畅销,成为有口皆碑的“红宝书”。尽管翻译稿酬不高,但“红宝书”却为我在前端圈子里博得了一些赞誉,也让我结识了很多大佬。
2015年,我终于又回归程序员的社群,加入了360的“奇舞团”,开始了梦寐以求的专业写码生涯。在此期间做过众成翻译,支持过360云盘、IoT业务线的前端项目,还独立开发并维护了Web字体服务“奇字库”。
写码之余,我还带领一些喜欢翻译的小伙伴翻译出版了十几本技术图书。在360的五年时间我还兼任了W3C(万维网联盟)的AC(会员代表),带队赴日本、美国、葡萄牙等国参加国际会议,推动了一些提案。2019年协助360加入了Ecma国际TC39并参加Ecma 118th GA(第118次会员大会r6d.cn),见证阿里、华为加入Ecma。
非常高兴成为本期AMA的受访人,大家可以问我关于前端开发、Web标准、技术翻译、自驱学习、个人成长等相关问题,期待与大家互动!
生活中并不缺少美,而是缺少发现美的眼睛。
祝掘友们中秋国庆双节快乐。
Infinity和MONKNOW,看完别的人沸点立马整上了
React前端状态管理心得
1. 没有银弹,redux也好,mobx也好,react-easy-state也好,能力加强的同时,学习成本,浏览器兼容成本也加大
2. 绝大大数页面的状态理清后,其实也想象中不那么复杂,首要的应该是注意以下几点:
(1)尽可能减少所需的状态(哪些才是真正需要的),很多数据了包含多维度的状态,不要制造状态(混乱),真正重要的是数据,而非状态。深入理解,吃透你的数据。
(2)哪些是计算属性,计算属性(仅get,非set)尤其要提出来,不应该set的一定不要set的,逻辑上可能是同样的状态,但搞好两个状态,并同时去set,会导致真实世界混乱。
3. 组件拆分、属性的传递的逻辑性、正确性和清晰性也是状态管理的一部分,而且其重要性丝毫不亚于纯数据的状态。
(1)正确决定组件的从属关系,并尽量减少不必要的组件。(如同节约dom标签一样)
(2)在上面的前提下,属性的传递可以尽量控制在不要超过2层,这样props的数据流向也一目了解
(3)在jsx里,属性传递的写法应采取始终解构的写法,这样最接近函数参数传递的感觉,如:
<BtnGroup$ {...{ pageTitle, survey }} />
const BtnGroup$ = ({ pageTitle, survey }) => {})
(4)计算属性应尽量由上级组件传给下级,从而使尽可能多的组件成为仅接受props并渲染的纯函数组件。
(5)函数属性传递时有意义的命名至关重要。
4. 勿过度追求完美,尤其是在UI与交互上(最难处理的是动画),要做到完美,需要极其复杂的状态管理,应先有一些效果,在保证不至于把状态搞得一团糟,在完全想清楚了数据的逻辑后,逐步加强。
5. react-global-state-hook的非reducer的用法,细粒度的get、set其实基本够用,尤其对状态变化的跟踪(从代码层面跟踪,选中所有get或set)比redux并不差。
6. 一个应用程序,最最核心的,最最复杂的逻辑,就那么几个,绝不会多,所以对这部分页面代码一定要精益求精,逻辑、结构一定要优雅如水。
下一页