每周一记(十一月)

先说重点

差不多一个小时以前, IG 3-0零封 FNC拿到了 LPL赛区的第一个世界冠军。我目睹了这一切,也曾今是一个英雄联盟玩家。还记得第一次弟弟带着我玩这款游戏,我抽到了一个8折优惠,花了36买了我的第一个英雄–金克斯,后来,买了第一款新年限定皮肤–羊年限定金克斯;也买过源计划--艾希。记得大学的第一个暑假高中同学小聚,网吧开黑玩一整夜也不会觉得累。记得最孤独无助的2015年,一个人在宿舍打出排位36连胜。记得几个月以前,快要离开大学之前,和同学们开黑的那段时光。老实说,当我忘记了出门要买装备,总是忘记交闪现,也经常线上漏刀的时候,英雄联盟早已不属于我了。可我总是会在忙得不可开交的一天后,打开直播看上两局;也全程关注了S8世界总决赛;也会打开网易云音乐,单曲循环RISE。到现在,我明白了,我还是喜欢英雄联盟这款游戏,即便我不怎么会亲自去玩了。

我一直喜欢玩游戏,从最开始的穿越火线,再到陪伴了整个高三的NBA 2KOL,到英雄联盟,在到如今的绝地求生。因为只有在玩游戏的时候,才是那个没有任何防备的自我。

工作&学习

为什么要把工作和学习放到一起来说呢?因为这一周真的很闲,临近项目结项,我最主要的工作,除了处理BUG,大把大把的时间就拿来学习了。

当然还是先将工作。我们的项目遇到了一个BUG,我们有一个嵌套层级很深的菜单,需要实现几个需求:

  1. 当用户切换主菜单的时候自动滚动到顶部。
  2. 当弹出板块树或者是进行滚动的时候,始终保持用户选择的菜单项在可视区域内。
  3. 当用户刷新整个页面的时候,能够准确还原到上一次用户选择的菜单项中。

我们最初并没有将Menu写成一个单独的组件,而是把它放在了DataReport中,并且只是用了scrollIntoViewIfNeeded来让选中的菜单项滚动到可视区域,因为在切换菜单是默认会选中顶部第一项的,所以不需要加任何代码就可以实现滚动到顶部这个功能。

理论上是这样的,并且我们也是这样做的。可我们发现了,如果我们切换菜单的时候,如果默认选中的不是报表,那么就没办法滚动到顶部。而且一旦刷新页面,用户当前的状态也就丢失了。

我第一想法是把Menu作为一个组件独立出来,这个我们可以更好的在组件内部实现逻辑。当切换菜单的时候,我使用了scrollTop=0这种方式来滚动到顶部。并且为了能够在刷新后记住用户状态,我需要反向遍历菜单树,并与当前路由进行对比,确认用户当前打开的菜单项位于的层级,从而控制其祖先菜单的打开和关闭。至此,问题解决了。

可是,在和boss沟通的时候,他第一时间判断我这样做是不正确的,并且现场撸了一个版本出来,且不讨论是否能用,但是太多的if else条件判断,反而让DataReport变得无比臃肿,再加上到下班时间并且我们在他身后看他写代码很久了,我一时口嗨就说了句写得乱七八糟的,这惹怒了我的boss,我也当场为我的不理智做出了道歉。
通过这件事可以看出来我的情商还要加强。

虽然最后还是采用了我的方案。

再讲讲学习。

在掘金上看了很多文章,都是零散的,比如说事件循环Shadow-Dom&Custom-Element,还是CSS mask&clip或是markdown2html,通过这些零散的知识点学习,我觉得我对前端的理解又有了更多的理解。在大方向上的学习上,主要是TypeScriptEcharts自定义系列,以及读源码。

特别是读源码,真的让我收获颇多。最近在看Wind Design的很多组件的源码,大体上是老版本的Ant Design的源码。很早就接触并使用到了Antd组件库,比如经常使用的Form组件却不知道是如何实现的。

我之前也按照自己的想法,封装了一个组件。可当读完源码后发现,真的是自己水平太低,很多问题都没有考虑到。并且作为源码,自己的代码也不够规范。

当然,从下周开始,我不会像现在一样闲了,但源码我还是会一直读下去。如果有时间的话,我会考虑记录记录写成博客什么的?

尾巴

上周末我把和上司闹不愉快的事情告诉了家人,而一到周一下班,妈妈就打来电话,问我的情况,生怕我和上司的关系存在问题什么的。说实话,我很感动,我给她说啊,都是技术上的事,不会带入平时工作的,并且我在意识到自己的错误的时候,也立马进行了道歉,况且我的上司也是一个很nice的人,这样他们终于不用担心了。其实就是这样,最关心我们的,非家人莫属。所以啊,都那么大的人了,做事情一定要考虑更多,让他们和关心你的人,少为你操心。

IG都夺冠了,那我也要戒掉自己的某个陋/懒习了,所以在最后立一个只有一个人知道的FLAG

分享到 评论