一、前言
up 主 2019 年毕业,找了一份前端工作,始终干到当初。2019 年末呈现疫情,三年的工夫,也差不多与我的职业生涯齐全重合了。刚过去的 2022 年,我也没有避开阳的命运(这病毒是真的强),就 12 月这一个月工夫,简直全公司都失陷了。而就在我卧病期待阳康的日子里,新闻上一直播放着某某 30 岁年轻人死于新冠,某某医生死于新冠等噩耗。我有点慌了,不是以前那种感叹一下就抛掷脑后的感觉,而是真的开始设想本人哪天会不会忽然被这病毒干死。
至此,我带着些许惶恐开始回顾这一年我做的事件,工作上的、生存上的、感情上的。这一年我的确抉择了做更多本人感兴趣的事,但后果有好有坏。生存仿佛真的就像有情的怪兽,它总会见缝插针地夺走一些你珍视的货色。但也会像圣诞老人一样,带给你一些意想不到的礼物。
二、拥抱开源
前端人肯定是对开源最器重的人群之一。整个前端的生产力基本上都被开源我的项目包揽了。作为一个前端,可能超过一半的工夫都是在用或者钻研他人的库和框架。也就是说,你职业生涯可能花了一大半的工夫在他人的开源我的项目上。
值得一提的是,2022 年我参加了一些自认为比拟有意义的开源我的项目,并且也帮忙了一些人。
MDN
MDN 能够说是前端工程师的百科全书了,我本人也常常在外面去查一些知识点和 API。
机缘巧合,在一次应用 CSS 属性 backdrop-filter 的时候,我发现元素居然呈现了层级不对的状况。艰深点说就是明明感觉应该是 A 元素在下面,B 元素在上面,但却是 A 被 B 笼罩了。于是想不明确的我就去 MDN 查资料,次要就是 层叠上下文 的知识点。而在 MDN 列出的属性中,并没有阐明 backdrop-filter 会造成层叠上下文。于是我只好去 W3C 查 backdrop-filter 属性的内容,找到了如下一句话:
A computed value of other than none results in the creation of both a stacking context [CSS21] and a Containing Block for absolute and fixed position descendants, unless the element it applies to is a document root element in the current browsing context.
Note: This rule works in the same way as for the filter property.
意思就是这个属性同 filter 一样,会创立层叠上下文。OK,至此应该就破案了,MDN 并没有把这个属性列出来。为了验证这个说法是否真的是正确的,于是我又关上了 Edge 的 3D View 性能,外面能够分明地看到以后页面所有元素的层叠状况。果然不出我所料,同 W3C 形容统一。
于是我就给 MDN 提了一个 issue,通知了他们我的想法,而后提了 Pr 提交了修改的内容。
官网人员回复如下:
内容是说他们也亲自测试了一遍,的确如我所说,感激我能发现并 fix 这个问题。
尽管并不是十分大的奉献,但我置信很多和我一样遇到这个问题的人,再次去查 MDN 的时候,他们就能理解其起因并解决他们的问题了。
Parcel
parcel 应该也有不少小伙伴用过或者听过,是一个十分简洁和疾速的前端构建工具,用处和 Webpack、Vite 差不多。我是在开发浏览器插件的时候,开始应用这个构建工具进行开发的。
在开发插件的过程中,我发现一个小问题,就是 parcel 打包进去的文件总是会带上 hash 值,并且还是无奈去掉的。官网的解释是为了更好的优化和浏览器缓存策略。然而开发过插件的小伙伴应该都晓得,在 manifest.json 文件中,咱们须要给一个固定的文件名称,所以如果文件名中会带上随时变动的 hash 值,显然是不可行的。于是我去翻阅了下 parcel 的文档,发现反对本人编写 parcel 插件,能够自行处理文件名称。为了防止反复造轮子,我想应该有他人写好的插件了吧,然而我翻了一圈没找到有用的。想了想罗唆本人写一个吧。于是写了一个插件叫 parcel-namer-hashless,并且公布到了 NPM 上。我也为此写了一篇文章解说如何去掉 parcel 文件的 hash 值
利用插件去掉 Parcel2 打包文件的 hash 值
果然有人和我遇到雷同的问题,缓缓开始有其他人开始应用这个插件,当初 github 上曾经有 28 个仓库在应用这个插件。用的基本上都是老外,国内用 parcel 的人还是很少的。
这个过程中还产生了一件乏味的事,我在 parcel 官网搜寻插件的时候,发现有天官网进不去页面了。进去就报错,于是我去提了个 issue,并且把 parcel 官网的代码拉了下来,发现是一个申请的参数谬误导致页面报错,无奈渲染。而后提了 Pr,牵强附会成了 Parcel 官网的贡献者。
这两个是我认为最值得分享的参加开源我的项目的经验,也是比拟有意义的。
如果思否也算开源的一部分的话,2022 取得了第三季度的 TopWriter 也是我认为比拟有意义的一件事。伤心的是思否寄给我的纪念品被被人偷走了。
三、开始发明
前端们肯定都很艳羡尤雨溪这种程序员吧,精确的说是创造者。他们发明新的货色,打造本人的产品和声望,同时还能挣不少的钱。
其实我始终很艳羡那些独立开发者,他们不仅有技术,有执行力,更有他人不具备的想法和创造力。我是只有一点技术,也有一点想法和创造力,但执行力一般般,综合起来就感觉本人可能并不能成为一个独立开发者。然而也不能一棒子打死本人吧..
2022 年 4 月,我将本人写的浏览器插件公布到了 Chrome Web Store 上,名叫Video Roll。
原本这只是我本人看视频用来解决一些视频体验问题的插件,而且自身性能就很小众,应该是个需求量十分小的性能。然而我还是想着迈出第一步,把它作为一个产品来打造。想法就是开源 + 公布到插件市场。于是我找来好敌人兼共事,帮我设计了一个比拟丑陋的 logo。而后我开始打磨这个小插件。从 UI 配色、交互,到单元测试、官网,我都一人做完。胜利公布后的一个月内,基本上没什么人用,这也在我的预料之中,毕竟性能这么小众。接着到了 7 月份左右,开始每个月有 200 个左右的用户增长了。到了年底,曾经有了 2000 多个用户。我开始也感觉 2000 个也不多啊,然而直到我去查看了 Chrome 的官网统计,用户超过 1000 的插件数居然不到 10% 时,我就有点开心了。并且插件还播种了十分多的好评,谷歌 5 分的满分,我的用户让我始终维持在 4.9 左右。而后在 10 月份,取得了 Chrome 官网认证的 精选插件, 还进入过几次“效率”类插件的举荐页。说实话,从最开始对这个小产品的预期来说,这波的确曾经出乎了我的预料。尽管开源过后 github star 并不多,但作为一个浏览器插件,周活用户曾经足够阐明它是个有意义的产品了。我也写过一篇文章介绍它:
Video Roll 降级,一款小众浏览器插件优化你看视频的体验
我还给它做了一个年终总结
这个经验也让我更加动摇了本人做产品的信心,2023 年我会打造一个从大学开始就很想做的货色,是个与音乐视频相干的东东,也心愿能帮忙更多的人。这个过程中如果能挣点外快当然是更好的,到时候再来思否和大家分享。
这里和大家分享一句 B 站游戏 UP 主形容《我的世界》中说的话“如果发明比竞技更乏味,那为何发明不能成为游戏的主体?”
四、看开工作
2022 之前的我,常常会为了几个 bug 搞得心烦意乱,满脑子都是工作期限、需要、问题单等等。工作在无形之中给了我一些压力,让我感觉原本挺感兴趣的职业,有时候居然这么烦人。然而 2022 之后,我缓缓开始调整了心态,不再去纠结于那些零零散散的 bug,不再去纠结于工作排期,不再去纠结于频繁变更的需要。这让我缓缓从工作的泥潭中挣脱了进去,把它当作工作和职业,工作中你就是打工者,你是来挣钱的,所以就要依照他人的要求来。想通了这点,工作中遇到的任何问题都不是问题了,能解决的就解决,切实无力解决的,换个中央即可。
五、享受生存
大学毕业后就简直没怎么玩过游戏的我,在阳了之后,居然在 Steam 上花了几大百买了游戏。嗯,闲暇工夫我开始玩游戏了。当我再次进入游戏世界的时候,才发现原来我曾经快两年没有这样一个人如此认真地玩游戏了。那种心无旁骛、毫无杂念,只想做工作通关的感觉,像极了刚开始做前端,违心花一个通宵来调 CSS 款式的感觉。那种做完工作后,立即想开始摸索下一个关卡的感觉。
这是工作很难带来的感觉,是只有去玩游戏、去静止、去游览、去看电影,能力有的兴奋和幸福感。当咱们处在这个放弃衰弱都成为问题的社会中时,让本人开心才应该是生存的主旋律。心愿看到这篇文章的敌人们也能放弃衰弱,多多享受生存。
本文参加了 SegmentFault 思否年度征文「一名技术人的 2022」,欢送正在浏览的你也退出。