🍿 紧跟 JavaScript 的步伐

2025-06-05

🍿 紧跟 JavaScript 的步伐

2020 年 7 月,我发现自己也成了众多受新冠疫情裁员影响的人之一。在此之前,我在 NoRedInk 写过各种语言,从 Elm 到 Ruby,再到 Elixir。更早之前,在 AppNexus 用 Ja​​vaScript 和 React 工作了三年。

有机会专业地编写 Elm 代码真是太有趣了!但当我开始寻找新工作时,我决定重返主流。在一年半没有编写任何 JavaScript 代码之后,我被 Elastic 聘用,职位是“JavaScript 工程师”。

那么我该如何提高 JavaScript 水平呢?

钩子

在 JavaScript 间隔年(一年半)期间,我仍然在 Twitter 上关注 JavaScript 社区成员,这让我大致了解了当时的情况。至少,我知道函数式组件和 React Hooks(但还不足以理解它们是相关的概念)。

我和以前同事的 Slack 里的一些朋友聊过,他们说:“是的,学习 Hooks 确实值得你花时间!”,还说:“是的,一定要读一下React 的文档,因为它真的很好”(略作解释)。他们还没在 JavaScript 方面骗我,所以我就照做了,并以此作为我的起点。

我确实读完了 React 关于 Hooks 的所有文档,现在我可以告诉你:是的,这确实是一份很棒的文档!当我对 Hooks 有了一定的了解后,我开始在 Elastic 的组件库(EUI)中寻找一些实际的例子。

我脑子里有一个关于 setState 的问题:是更常见的情况是只调用一次 setState 并返回一个代表状态的对象?还是更常见的情况是多次调用 setState,每次都返回一个通常构成状态对象的变量?

我以为查找表单就能轻松找到答案,因为表单通常会在状态中跟踪多个变量。我找到了一个表单示例,找到了我问题的答案:多次调用 setState!

肌肉记忆

除了了解 React 的变化(其实并没有我想象的那么多)之外,我还想找回 JavaScript 的肌肉记忆。可以说,掸掉灰尘。

一开始我并不确定该怎么做。我尝试过Codecademy,但别忘了,我已经专业地写过三年 JavaScript 代码了,所以虽然 Codecademy 在我学习的时候很棒,但我并不是从零开始。事实证明,重新适应的最佳方法就是……直接写 JavaScript。我尝试过几种不同的方法。

塔罗牌副项目

在真正深入之前,我试着给自己一周时间,暂时放下压力(你猜怎么着:压力还是来了)。这段时间里,我至少找到了发挥创造力的空间,并想出了一个有趣的项目!就像典型的业余项目一样,在写这篇文章的时候,它还没有完成,但希望它能成为未来文章的素材。

我想开发一款塔罗牌配套的网页应用:你抽一张牌,电脑会告诉你它的含义。预测未来这类事情的诀窍在于尽可能保持模糊,所以我就选择了这种方式。

我尝试了自然语言处理库Natural和句子模板库Sentencer。我会在另一篇博文中详细阐述。总而言之,能够用 JavaScript 完成一件让我兴奋的事情,真的帮助我找回了 JavaScript 的肌肉记忆。

采访蛋糕

我面试的时候,InterviewCake为那些因为新冠疫情而被解雇的人提供了很棒的支持。感觉比市面上一些不知名的面试书籍读起来有趣得多,而且里面还有互动示例!

每个工作日我都会给自己设定一个目标,解决 InterviewCake 的问题,这确实帮助我提高了 JavaScript 水平。

我的博客

我一直想离开 Medium,但又不想过度设计个人博客。我面试现在的工作时,他们提到我即将加入的项目目前是用Gatsby编写的。考虑到这两个因素,再加上我的空闲时间,我觉得是时候尝试一下 Gatsby 了。

建立我的博客,真的是我在面试准备过程中第一次感觉自己身处一个真正的 React 代码库,而不是一些玩具面试题。回归的感觉真好。

我确实在一件事上做了过度设计:在页面底部通常显示“用❤️制作”的地方,我添加了一个功能,可以从我最喜欢的一些表情符号中随机抽取表情符号。之后,我决定考虑季节因素,并添加了一些日期检查功能,例如万圣节和生日表情符号(九月、十月),或者圣诞节和冬季表情符号(十一月、十二月)。对这个小小的功能感到兴奋,让 JavaScript 练习感觉像是玩耍而不是工作。

关于集体意识

为了进行更多对话式采访,我想了解 JavaScript 社区的想法。我浏览了 React Conf 2019 的演讲标题,这很有帮助。

我观看了Becca Bailey《2019 年 React State 现状》演讲。这帮助我了解了自 Hooks 发布以来,关于状态的思考发生了怎样的变化。这是一个很好的概述,让我能够及时了解最新情况。

我还看了Brittany Feenstra《无障碍是一场马拉松,而不是短跑冲刺》。在我编写 Elm 的时候,人们强烈要求将无障碍设为默认设置。我非常想知道 React 社区对此是如何看待的。我很高兴看到大家力求不破坏语义 HTML,因为在我离开的时候,到处都留着 div 完全没问题。

练习面试

除了所有这些准备工作之外,与每天使用 JavaScript 的朋友进行模拟面试也非常有帮助。我练习了假装自己在面试,但最后我还会问:“好吧,我写的 JavaScript 代码中哪些地方过时了?你能帮我用 Hooks 把它现代化吗?”

我上次写 JavaScript 的时候,遵循的最佳实践是,如果你用的是lodash,就用它做所有事情,即使它Array.prototype有指定的函数。在练习面试的时候,我了解到现在大家更倾向于Array.prototype“函数优先”

与每天使用 JavaScript 工作的人一起验证我的假设和理解极大地帮助我恢复了对 JavaScript 的信心。

一个月

我又开始写 JavaScript 了!一个月过去了,有几次我正准备写点东西,结果却写成了一堆乱七八糟的伪代码(就是switch/case 之类的),不过现在大部分时间,我都能流畅地写 JavaScript 了。

在我高中的第一堂计算机科学课上,我们学习的是Pascal语言,我的计算机科学老师承认它在2010年已经过时了。但我的老师告诉我们一句话,让我一直铭记在心:专注于语义而不是语法。我之所以能够在不同语言之间切换,是因为我掌握了核心概念,学习一门语言的语法可以放在第二位。

我之所以被录用,是因为我作为一名工程师的思维方式,而不是因为我能写某种语言。最终,拥有这种优先顺序的雇主才是我想要工作的。

文章来源:https://dev.to/glitteringkatie/keeping-up-with-the-javascripts-lc3
PREV
在筛选了 400 多份求职申请后...
NEXT
如何解决电子邮件中 ​​CSS 和 HTML 的难题