为什么你应该首先学习 JavaScript 原理(而不是最热门的框架)
疯狂的框架竞赛中没有赢家
所以我不应该学习 JS 框架?
如果你不理解 JavaScript 的工作原理会发生什么
什么才是最重要的?JavaScript 核心概念和原则
在哪里以及如何掌握这些概念
学习 JavaScript 核心原则的理由
每个 JavaScript 开发人员都应该知道的 33 个概念
最初发表在我的博客MullinStack上
疯狂的框架竞赛中没有赢家
在过去的五年里,我一直疯狂地追逐着 JavaScript 库和框架之间最热门的竞争。或许在某个时刻,我们每个人都会问自己应该学习哪个 JavaScript 框架,评估它们的优缺点,为什么选择这个,为什么选择那个,等等。我曾经是这场竞争的受害者,或许你也一样。当然,我不知道你是否也遇到过这种情况,但我一直在疯狂地追逐最热门的 JavaScript 框架或库,寻找趋势、进行比较,以及如何学习它们,因为行业需要它们。
这场疯狂的竞争没有赢家,因为它永无止境。就是这样!昨天你学习了 Backbone.js、jQuery、Knockout.js、Ember.js,然后是 AngularJS,现在是 ReactJS、Next.js、Vue.js,以及所有 Angular 的变种。今天,又出现了新的 Ext JS 和 Aurelia。明天还会有新的框架出现。框架的列表无穷无尽。
拜托,拜托,拜托,别急着学习。不要追逐最热门的 JavaScript 框架或库。首先,投入你宝贵的时间来理解和专注于引擎:核心概念和 JavaScript 原则。我们将在本文中深入讨论这个问题,并提供一些理由、关键点和资源,帮助你掌握 JS 知识。
所以我不应该学习 JS 框架?
不不不,我不是这个意思。实际上,你应该学习它们——但不要浪费你宝贵的大部分时间。我的意思是,时间有限,我们应该明智地投入到真正重要的事情上。我知道,学习更现代的工具、框架、库(上面列出的一些)总是令人难以抗拒。这是因为全世界——你的同事、你关注的论坛、平台和社区——都在吹嘘他们拥有的酷炫新东西,以及它们能让你多么轻松地实现你的开发目标。你尝试过吗?我想你们中不止一个人有过这种诱惑,但最终却失败了。我理解为什么会发生这种情况。作为开发者,我们需要紧跟技术发展。
我应该承认,几年前我曾被这种诱惑冲昏了头脑。记住,框架的目的是真正加速你的开发之旅,提升速度。它负责处理复杂和抽象的事情,为你提供一条捷径来加快编码过程等等。但这并不意味着你会精通并成为一名优秀、知识渊博的 JS 开发人员。这意味着你只知道该做什么,却不知道为什么或底层工作原理。
我也知道,就像生活中的一切一样,我的观点会有批评者,也会有拥护者。这篇文章只是一份指南,一条建议。它基于我的个人经验以及我在 LinkedIn、Reddit、Dev.to、Medium、Facebook 群组等编程讨论平台上看到的大量抱怨。
如果你不理解 JavaScript 的工作原理会发生什么
或许你对自己最喜欢的 JS 框架了如指掌。但是,说实话,有些时候事情会变得一团糟,因为意想不到的行为、错误和异常开始出现。正如我的队友 Soham 所说:“这真是太疯狂了!”嘿!休斯顿,我们遇到问题了——有些东西没有按照我们预期的方式工作!是时候花大量时间在 Google 上搜索纯 JavaScript 代码,试图找出导致这种奇怪行为的原因了。所以,你开始深入研究,你在这个酷炫框架上节省下来的时间就开始减少。这时,对 JS 的扎实理解将拯救你。否则,你会因为无法理解事情发生的原因而感到压力重重。
什么才是最重要的?JavaScript 核心概念和原则
为了让大家读得更轻松,我只会简单介绍几个核心概念。其余概念我会简单罗列,方便大家记住。在接下来的文章中,我们将深入探讨每个概念背后的含义。
JavaScript 引擎、执行上下文和调用堆栈
本文的主要目的之一是引导你了解真正重要的东西,即 JavaScript 的核心概念、原则和基础知识。我所说的基础知识不仅仅是指了解它的语法、变量、数据类型、循环和函数。我指的是除了这些之外,还有一些更复杂的概念。因此,我们首先应该学习的是 JavaScript 引擎的工作原理、它执行哪些步骤、词法分析的含义、语法解析、代码生成阶段,以及什么是执行上下文(包括它的类型,以及执行上下文的创建方式和时间)。
范围
以上只是我们精通 JavaScript 所需核心概念的一小部分。之后,我们应该重点理解作用域、全局作用域、局部作用域、函数作用域和块作用域。了解不同类型的作用域如何工作以及何时创建它们,将使我们能够预测和确定特定场景下的输出。
闭包
闭包只是一个函数,位于另一个函数内部,能够记住其执行上下文。即使对于经验丰富的 JS 开发者来说,这个概念也相当棘手。我一直在努力全面掌握闭包的概念。它看起来可能很容易,但实际上并非如此。有时我们甚至没有意识到自己正处于一个闭包的前面。如果你对闭包有深入的理解,你就能阅读和理解更复杂的代码。例如,你可以深入研究你最喜欢的框架的源代码,并开始理解它的代码。
更多 JavaScript 核心概念的数组列表
首先,上面的概念很棒。但远不止这些。正如我之前承诺的,接下来的概念只是为了帮助大家记住。你应该能够理解 JavaScript 引擎如何处理异步,因为众所周知,JS 是一种单线程编程语言。此外,我们需要熟悉和掌握的其他核心概念包括原型、继承、回调、promise、函数式编程概念以及函数组合。
当然,您还应该了解最新的 ECMAScript 规范:ES6、ES7、ES8、ES9、ES10、ES.next……以及后续版本。
在哪里以及如何掌握这些概念
在学习过程中运用 80/20 规则
这篇文章也旨在阻止你学习最热门的 JavaScript 框架,并敦促你保持冷静,学习核心的 JavaScript 概念。
正如我们之前讨论过的,新的框架和库会不断涌现,然后消亡。这正是我们近年来所看到的。如果你想跟上潮流,一个好方法是建立一个良好的学习系统。这就是所谓的 80/20 规则:投入 80% 的时间并专注于学习核心概念,每天深入学习。然后用剩下的 20% 的时间投资于最热门、最酷的工具。
与其担心学习 JS 框架/库的趋势,不如阅读以下资源。最重要的是,其中一些是免费的!所以,别再找借口了!
代码整洁之道:敏捷软件工艺手册
程序员修炼之道:从熟练工到
JavaScript 应用程序编程大师
你还不了解 JS
JavaScript:精彩部分
学习 JavaScript 核心原则的理由
你是 JS 大师
如果你精通 JavaScript 的核心和基础知识,那么学习一个新的框架对你来说将是小菜一碟,因为你只需要学习它的语法和一些你可以轻松掌握的内部功能。如果你了解纯 JavaScript,你就不需要那些可能与你的长期目标不符的工具包。
更好的代码
如果你了解引擎的工作原理,如何预测函数在特定场景下的行为,或者作用域的工作原理,我敢说,当事情没有按预期进行时,你会节省时间。此外,你也会更有可能创建更好、更高质量的代码。
感谢阅读!如果觉得这篇文章有趣,请点赞并与朋友们分享,我将不胜感激。我希望能够为你带来更多知识。别忘了在Medium和我的博客MullinStack上关注我。
文章来源:https://dev.to/blarzhernandez/why-you-should-learn-javascript-principles-first-not-the-hottest-frameworks-kb9