这一年总共就写了四篇文章,啧 🤦。虽然文章写的比较少,但 “事” 没少做。

babel-plugin-jsx:去年项目要迁移新版本的框架,意味着要把之前的代码全部重构一遍。其实当时刚开始重构的时候,就有个想法:为什么不用 jsx 的格式来重构代码呢?这样不仅会提升代码的逻辑清晰度,嵌套层级也会极大地降低,对开发很友好。我的设想是,开发一个 babel 插件。结果,当时只做了一个开头,后续一直没时间,于是就搁置了。终于在某一个周末,我又重拾了这个项目,然后就做完啦!我当时也挺震惊的,这个玩意也没当时看起来那么复杂,早知道就忙里偷闲给搞搞了。然后经过一周的测试,我打算向部门内部推广。结果不是很理想,原因也提了很多。但是我感觉更大的原因是,自从提出准备重构到现在,已经过了好久了,大家都已经按照之前那种写法开发的,现在突然又要换新的写法,成本太高。这让我想起来一句话:人生就是手脚快的人赢,如果什么都不做,那就什么也得不到。有一次前端领域组织培训的时候,说要如何降代码量,我又自告奋勇地分享了一下这个插件。最后,结果还是不敬人意,架构师们没采纳这个方案。当时也挺气的,感觉是在 “对牛弹琴”。直到有一次前端架构组给了一种降代码量的方案,用一个函数去包裹这些重复的配置。当时好像就突然想明白了一个道理:代码的树形结构,无论是 html 这种标签嵌套式,还是单纯的 js 对象嵌套结构,都是树形结构的一种抽象。仔细看看,就能发现共同点:成对出现的标识符。对于 html 就是各种成对的头尾标签,例如 <div></div>,而对于普通的 js 对象,就是各种成对的花括号({})。对于函数那就是成对的圆括号(())。这三种刚好分别对应了最开始的开发模式:js 对象嵌套、jsx 格式:标签式嵌套、函数封装:圆括号嵌套。这样再看 jsx 和函数嵌套,其实都是同一个问题的不同解决方案(好像说了一句废话 🤔),没有孰优孰劣,就看公司开发规范怎么规定了。

wordcloud-online:去年元旦的时候,我把我们 “摆子群” 的聊天记录导出成一个 txt 文档。然后借助之前写的一个词云生成器,生成了一个年度热词的词云。今年元旦我想再复刻一下,但是觉得再用那个项目,不是很方便。于是就打算开发一个网站,每次只需要导入一个文档就能自动生成词云了。用了半个月的时间给做出来了,而且是用 React 开发的,对于我这个 React 小白来说,也算学到了不少知识点。而且从 React 相关的工具库中,发现了 Vue 的 “影子”。优秀的框架都是相互借鉴的,只是为了让开发者有更好的开发体验,并且遵循当前主流的技术设计理念。对于我这个资深的 Vue2 玩家,在这次上手开发 React 项目中,几乎没咋遇到比较严重的磕磕绊绊,还是很好上手的。

DouDiZhu-Register:有一次去朋友家玩,大家伙在打牌(斗地主),我在旁边围观。突然脑子闪过一个念头,整一个记牌器帮助参与者快速记牌。然后就开始琢磨记牌规则,设计了一套词法规则。当时设计出来的时候,我自己也惊呆了,真的很完美!对初次使用者也很友好。先开发了一个电脑端的,然后又适配手机和平板,手搓了一个键盘。好看的不得了~

code-inspector-plugin:有一次看到一篇博文介绍一个很好用的插件 code-inspector,可以快速定位组件源码的源文件位置,而且兼容目前各种主流技术栈和打包工具。然后我就加了交流群(生平第一次加这种群),问了问作者,有关实现原理的问题。于是就有一个想法:给我司的 SAAS 项目也开发一个类似的插件。因为我司的项目基于 Webpack 进行构建打包,那就开发一个 Webpack Plugin 叭。这个插件还算简单,没用多少时间。然后就是推广,在内部群里分享了一下。前端组长本来说给我推一下的(因为要动平台的代码),结果就搁置了,因为那时候我也没开发 SAAS 项目了,然后就没然后了 🤦,算是黄了。不过好在把这个项目放在了我们产品的内源项目中,算是黄了一半叭。有时候就这样,做出来的东西自我感觉很好,结果因为推不动就黄了。

Ti18n:脱胎换骨后,重新出发。之前的 Turboui-i18n 其实和 Turboui 没啥关系,就是借了一个名头。然后有一次,一个同事想在我们的存量项目中也能用这个插件,问我能不能支持。经过一番考察后,发现可以做,然后我就打算重构一个新版本,新插件,脱离这个 Turboui 。经过一阵子倒腾,Ti8n 强势来袭。我最近的工作中借助它提升不少效率。有一个很巧妙的设计通过注释与插件进行交互。例如,// @Ti18n prop=message,蛮有意思的,其实是参考了 leetcodeVS Code 插件生成文件时的注释。有时候还是很庆幸自己能知道这么些东西的,涉猎的越多,知道的越多,才能知道这个能不能做,以及如何借助一些优秀的设计,站在巨人的肩膀上。

vue2-sub-app:因为我们部门有好多卡片项目,这些项目打包后会生成一个 JS 资源。使用时,需要通过以 url 的方式引入这个 JS 资源。这个 JS 资源其实就是一个 Vue 组件。由于卡片内部有时候要用到切换页面的功能,v-if 需要用到很多次,感觉不太优雅,想着要是能用上 vue-router 路径匹配组件的功能该多好。为了解决这个痛点,这个工具库应运而生。通过改写目标组件实例更新子组件列表时的 push 方法,获取到其所有的后代组件,这个方法真的很巧妙。本来想着发布到公司内部的镜像仓里,给大家伙分享一波,结果直接把流程卡的死死的,以我现在的工作身份根本无法发起流程,有点气人 😡。

其实还有一个项目,从 6 月底打算做,7 月初的时候,调研的差不多了,感觉用 Vue + Vite + Electron 可以做。之后,就一直在断断续续地开发中。本来想着 10.1 前发布的,前几天刚好又看了一个框架 Tauri ,比 Electron 更轻量,打包后的体积能减少 10 倍。毕竟 Electron 塞了一个浏览器内核进去,基础体积还是太大了。但是 Tauri 是需要用 Rust 进行开发的,我还没学过 🤦。何况现在的功能逻辑基本上完成的差不多了,打算先整一个 Electron 的版本(v0.1),后续再优化成 Tauri 的版本(v0.2)。希望 2024 结束前,这款应用能正式和大家见面。

聊完了今年做过的自我感觉技术能力有提升的事情,再聊聊工作和生活叭。这一年,我在努力让自己的情绪不受别人影响。尤其是别人的风言风语,或者一些他人的观点,避免这些影响到自己。我同时也在改观自己对周围人的看法,不再强求他人做我自己感觉很容易做的事,或者应该做到的事。之前,看他人做事时,总会代入自己,自己会如何去做。如果自己能做到,对方做不到,心里就对这个人有种 “鄙视” 的看法:这么简单的事,我都能做到,你居然做不到。这种想法很容易让自己难于融入周围的人,虽然我平时工作时,也是温言温语,基本上没发过脾气。就算发脾气也是自我消化了,也不会对他人显露出来。

之前有一阵子,工作很忙,总是很晚才下班,周末还要加班,一度有想要离职的想法。来西安这一年半,在工作上倒是没学到什么东西(自我感觉)。浏览器开发者工具倒是玩的很花,各种 Debug 技巧,用的很熟练。日常开发工作的完成,感觉还是老样子,需求人员那边交付每迭代的任务,然后自己看看怎么做比较好,最后就上手开发了。总感觉少了点什么。我之前一直有一个想法就是开发前,先写一个开发设计文档,具体到哪个功能怎么做,会有哪些坑需要规避,以及一些难以发现的 BUG。可是,现在的开发流程还是老样子,丝毫没有进步。并且,有时候我会在公司搞自己的事情。总会有一段时间,实在不想开发本迭代的任务,然后就去摸鱼搞自己的事情,导致剩余的开发时间就不够了,后面就火急火燎地赶进度。这个坏毛病得改!还是得把工作任务的优先级提到最高,完成后如果有空闲时间,再去搞自己的事情。有时候挺烦工作环境不能访问某些外部网站的,导致查资料的时候就很麻烦。如果要换下一份工作,我一定要换一个能访问外部网站比较自由一点的公司,在这工作天天可太憋屈了 😩。

在一次产品双周例会上,有个我的议题,让我出个方案关于项目中用的 UI 组件升级的事。我们产品是一个公共底座,有许多其他产品的页面也在我们平台访问,这也就意味着需要和其他各个产品对齐,一起推进升级。这个升级之前五月份的时候就搞过一次,因为遇到一个平台问题,以及各个产品环境参差不齐,就一直卡在那了,然后就没有然后了。直到最近,又开始提这个事。会上,我就讲了讲自己的方案,因为某些产品只有单一的测试环境,于是就打算先在本地验证,可还没讲到一半,产品经理就打断我了,说这样搞不行,直接就给 pass 掉了。说,如果其他产品没环境就让他们自己再搭一个环境,又提了一下,前几年整个系统切换的时候,给他们搭建了不少环境,怎么可能就一个环境!(这个事,我是第一次听说的,之前也没人提过,那时候就让我催着其他产品搭环境,有点无助。)然后,我又讲了讲目前的进展及阻塞点。产品经理听了又开始急了,说听不懂我讲的是啥。然后他又说了一大堆东西,主要还是觉得这个任务,我做的不好。实话实说,我也觉得自己做的不好。我不是一个擅长 push 别人的人,而且我也不想 push 别人。我觉得有些事别人能做好就做好,做不好就做不好,非要催着别人干,给别人压力,这件事我本身就很不喜欢。我也很讨厌那些 push 别人的人,尤其是某些 Owner/TL 角色的人。来这边一年多了,也看到了某些眼里只有进度,不管员工死活的人。想起来上次看到的一个经济学的书中讲到的,某些官员被调任到地方任职时,为了政绩,大刀阔斧搞经济,反正任期满了之后就会被调离,完全不顾后面的影响(刚好最近大部门的产品经理升职调走了,这种感觉更明显了),例如,财政赤字。在公司看到的这些人让我颇有遇到这种官员的感觉。

记得一两年前时候的我,遇到工作中的问题,会和它死磕到底,直到把问题解决。然而现在的我,却很少有这种状态了,遇到问题,只想着赶紧敷衍了事,没有了当初的那种心气。于是,我在质问自己:难道是我变了吗? 应该不是:之前的我,工作内容不是很繁重,有大把的时间可以用来钻研问题,以及做自己喜欢的事情上。而现在的我,每天能安心开发都是一个问题,有时候这件事还没做完,另一件事就已经安排进来了,让我感觉很心累。而且还时不时被拉去看用户的生产问题。有时候一天忙来忙去,等到下班后发现啥也没干,当前迭代的任务进度毫无进展。乱序无章的工作内容是一方面,其次是,开发的内容。不知道从何时开始,我开始对 B 端的产品开发失去了兴趣,可能前两年接触的太多了,公司内部的工作台项目,大体都是一样的。而且还用着比较老的技术栈(Vue2),老技术栈好处是,我已经很熟悉了,丝毫不担心该如何实现的问题。但缺点就是,这样会让我觉得止步不前,从公司项目中学到的微乎极微,那就要在私下里提升自己,无论是看书还是开发自己的项目,对于我来说,能提升自己的都是好的。这一年,也没咋看书,看了几本闲书,技术相关的也看了一点。倒是买了不少书,有时候过节,部门发经费让选礼物,我都选择买书,所以攒了好多还没看的书。今年有空都给看看。未来一年我打算好好学学 Rust,最好再用它做一个小项目。

国庆假期结束,回来的路上我在想要不要明天换一份工作,或者试着面面试,感觉这一年有点松懈了(想较于 23 年)。因为至少我能确定的是,西安不是我长久的归宿,我也不是很喜欢在这边待着,也没个朋友啥的,周末就很枯燥。一个人在家学学习,或者看剧啥的,也挺没意思的。有时候也想出门走走看看,但总是因为自己一个人而望而却步。今年年初的时候,家里介绍了一个女生给我认识,在宁波工作。我俩也聊了蛮久的,但是我是没法接受异地恋的。也不可能让人家跑到西安来,如果想进一步发展的话,就只能我去浙江,大概率是杭州。其实我俩接触的也比较少,只是家里人比较喜欢,我对她也不反感,也不抵触,如果以后真在一个城市发展的话,感觉可以试一试。我对我下一份工作的期望是,要能长久地干下去,毕竟是第三份工作了。要么工作内容很感兴趣(比如,做 C 端的产品,或者搞前端基础建设啥的),要么找一个轻松一点的工作(不咋加班,工资少点也能接受),可以有更多的空闲时间做自己的事情。我得给我换工作找个理由,而不能全是因为那个女生。杭州也挺好的,刚好我姐姐在温州,以后每逢周末有时间就可以去找她玩了。而且也有一些朋友在杭州,相比西安确实好不少。我也有想过公司内部内转,但是在目前的公司内转到杭州大概率不太可能,只能换工作了。况且我想跳出这个工作环境,找一个自由一点的公司。那就跳槽叭!首先,先看看能不能在日常工作中,做点比较拿得出手的工作写在简历上,把简历丰富一下。刚好也三年了,找下一份工作,应该也不是很难。给自己一年的时间,等到明年十月份的时候,看看能不能换到杭州工作。《“假期”结束,开始“苦难”》。

下一年寄语:

  1. 处事不惊:能时刻保持情绪稳定,有自己的判断力,不受旁人旁物的影响。
  2. 井然有序:面对工作上杂七杂八的任务,合理划分优先级,能游刃有余地处理。