探索 JavaScript 的神秘世界

2025-05-25

探索 JavaScript 的神秘世界

JavaScript(以及整个前端开发)可能会让人望而生畏,因为太多炫酷的事物层出不穷。语言本身在不断发展,其周围的生态系统也在不断发展。从 React、Vue、Angular 甚至 Hyperapp 等框架及其快速变化的 API,到它们周围的捆绑系统,再到语言本身,JavaScript 正在快速发展,想要跟上这些变化并非易事。五年前,这些工具甚至还很少见。像本文这样的博客文章概述了学习现代 JavaScript 并跟上最新动态的难度。

2015年,或许正值JavaScript最混乱的时期,我开始接触JavaScript,在此之前,我主要从事数据分析脚本和计算机科学课程的开发。从那时起,我有幸教授了数百人学习JavaScript。因此,我将分享一系列关于我的JavaScript学习历程的故事,以及我如何决定要教授什么内容,希望你们能比我少犯一些错误,也希望我们能让JavaScript的世界变得不那么可怕😈!

我们该如何面对 JavaScript 恐惧?

关注基本面

该语言的基本原理永远不会发生如此巨大的变化,因此对其细节的深入了解只会对你有帮助。

尤其是在 JavaScript 中,了解调用堆栈、上下文、范围、原型链、高阶函数、异步编程和事件循环等中级概念非常有价值,并且将有助于您进一步使用该语言进行任何工作。

我也非常感谢这条评论:

我同意掌握更多 JS 基础知识会很有用。我认为 JS 框架具有乘数效应——你事先了解的 JS 知识越多,JS 框架带来的好处就越显著。

最近的一个例子是我在工作中使用 Ember 框架。该框架提供了很好的模式,用于在其“控制器”中管理组件状态及其相关数据。但基础的 JS 知识帮助我更好地了解了这些控制器的局限性。一位同事结合使用了导入/导出、JS 类和面向对象编程,以便更好地抽象和管理一些数据复杂性,从而更好地拆分代码并提高代码的可复用性。使用标准 JS 可以更好地利用该框架。

真正掌握基础知识,框架才能真正发挥作用,也更容易学习!这些框架和库的底层其实就是 JavaScript——它们并非什么魔法!

事实上,你的项目可能永远不需要使用框架——GitHub 运行原生 JavaScript,而 Hacker News 运行总共150 行未压缩的 JS 代码。而且你的网站会更轻量!

我很欣赏 Dan Abramov 的《你可能不需要 Redux》 ——我认为更多的库和框架应该让它们的联合创始人明确表示,他们的工具并不总是适合这项工作!这是事实。

闪亮物体综合症

所谓“闪亮对象综合症”,指的是你看到一个新东西,立刻就想放下一切,专注于它。在科技领域,这可能意味着每次有新的库出现,你都要重写你的应用程序。

我对此深感愧疚——我以前每周都会以用一个新的库或框架开发一个应用程序为主题写博客文章。我也曾在工作中使用过 JQuery、Angular.js、Angular、Vue、Elm 和 React。但这种做法不应该成为常态,也不应受到鼓励。

我觉得我经历过最精彩的“闪亮物体综合症”故事,是在一个团队里,他们使用一个中文库,但文档还没有完全翻译成英文。我记得我当时用谷歌翻译来尝试翻译。结果效率很低,而且如果有人问起,谷歌翻译在翻译技术文档方面也不太好。虽然这个库看起来很酷,但如果能用我们常用语言的库就更好了。

那么让我们来谈谈如何克服“闪亮物体综合症”。

你不需要知道一切

很大程度上,由于冒名顶替综合症,很多开发者觉得有必要了解所有事情——但这根本不可能!要了解的东西太多了,没有人无所不知!不断提醒自己这一点,不要觉得有必要了解所有事情——即使这很难。

引用 Dan Abramov 关于新的 React Hooks API 的话:

Hooks 是 React 的一个实验性提案。您现在不需要了解它们。

(来源)

一切事物都是如此——尽管你可能感觉不到如此。

注重深度而非广度

一旦你掌握了一个框架或库,学习下一个就容易多了。如果你理解了组件架构,那么你已经学习 React、Angular 和 Vue 的四分之一了!你不需要全部掌握它们。当然,它们都很棒,功能也各有不同,但你很可能只需要其中一个。

不要立即迁移到最新版本

另外,在为项目选择技术栈时,不要成为第一个采用者。当然,它可能很酷,你可能会因此写一篇博文,甚至可能让你的某些代码更简单。但是——你可能会被库中的某个 bug 卡住,直到问题修复才能继续前进。又或者,你想要做的事情根本没有文档,而除了专家级开发人员之外,招募其他人加入你的团队是不现实的。

让其他人先找到错误;然后您就可以开始使用那个很酷的新工具了!

此外,持续改进并为应用创建现代化的界面也至关重要,但如果你的技术栈仍然适用,则无需彻底更改或重写。React在 Google 搜索量(src)上刚刚超越了 JQuery ,尽管 JQuery 在 JavaScript 世界中可能已是历史遗留!

明智选择

由于你不可能学习或使用每一个新出现的框架或库,你还必须弄清楚如何明智地选择你的技术。在决定为项目使用什么工具或学习什么工具时,有几个关键问题需要考虑:

  • 它使用得好吗?如果它背后有一个社区,那么它就更有可能拥有贡献者,并能频繁地迭代功能和解决错误。此外,它也更有可能拥有持久力。
  • 这个项目背后的社区是谁?是一家大公司吗?他们有行为准则吗?他们如何对待新用户?
  • 它经常更新吗?你肯定不想被那些没被修复的bug困住。
  • 频繁发生重大变更吗?您肯定不希望为了保持工具的更新而进行重大代码更新。而且,这可能会给工具的研究带来困难。Elm 和 Angular 就是这样的。
  • 这款工具有哪些功能比其他工具更好?它有什么额外的功能吗?或者解决了其他工具无法解决的问题?
  • 它适合你的团队吗?例如,如果你的团队主要由初级开发人员组成,那么该框架是否有良好的学习资源和文档?如果你的团队主要由函数式程序员组成,那么该工具是否适合这种模式?
  • 文档完善吗?这对于轻松使用该技术至关重要。
  • 代码看起来怎么样?代码库看起来写得好吗?可维护吗?
  • 这个库性能好吗?

这里没有单一的正确答案——如果这项技术对你的团队有用,那么它就是正确的解决方案,不管一些思想领袖在 Twitter 上说什么。

如何了解 JavaScript 世界的最新动态

好的——现在我们已经讨论了闪亮物体综合症——您如何以合理的方式了解最新更新?

事实上并没有那么恐怖!

在结束本文之前,先来快速回顾一下现实:JavaScript 的发展速度其实远非光速。React、Vue 和 Angular 都已经问世四年多了,ES6 也同样如此,它很可能是 JavaScript 史上最大的一次变革。实际上,并非每周都会出现一个新的流行框架。即使有,你也不必学习那个框架。一项技术的优秀之处最终通常都会被整合到其竞争对手中——看看 React 是如何继承自 Angular.js,而 Angular 又是如何继承自 React 的——Vue 也从两者中汲取了经验!

此外,我认为 JavaScript 和前端开发总体上正在不断发展,这是一件好事——它需要发展,以使开发更容易,用户体验更好。

希望这篇文章能让 JavaScript 的世界变得不再那么恐怖,变得更容易理解!

额外福利:我现在非常感兴趣的 JavaScript 内容

保持联系

对于未来的读者来说,这是为万圣节演讲而写的,因此主题很恐怖!

文章来源:https://dev.to/aspittel/navigating-the-spooky-world-of-javascript-3h45
PREV
你的终端是什么样的?
NEXT
我对新程序员问题的回答