Vanilla JavaScriptは学ぶ価値がありますか?絶対に。

この投稿の目的は、すべてのフロントエンド開発者にとってJavaScriptの基礎の重要性を強調することです。純粋な(バニラ)JavaScriptについて十分な知識が必要な理由を説明します。これは、追加のフレームワークやライブラリがないJavaScriptを意味します。

また、これらの基本を学ぶのに役立ついくつかのリソースについても説明します。

この投稿の背後にあるもう1つの理由は、意欲的なWeb開発者の多くが、巻き上げ、クロージャー、プロトタイプなどのコアJavaScriptの概念の学習をスキップする傾向があることです。ReactやAngular2などの最もホットなフレームワークに直接アクセスします。このアプローチが最も便利ではない理由を説明します。

誰もが$ {addTheHotFramework}の知識を持つ開発者を望んでいます…

では、Vanilla JavaScriptをわざわざ学ぶ必要がある理由はありますか?

言語自体のコアに関する知識がなければ、強力な開発者になることは困難です。特定の法分野に飛び込む前に、法の基本原則を理解する必要があるのと同じように。この比較はまったくの偶然です。?

意欲的なWeb開発者の大多数は、できるだけ早く採用されたいと考えていることを理解しています。これも欲しかった。

JavaScriptの基本についてクラッシュコースを受講し、いくつかの凝ったフレームワークに飛び込んで、ToDoリストを作成し(子犬を死なせて)、それをGitHubにアップロードしてから、仕事を探し始める方がはるかに簡単なようです。

…しかし、Vanilla JavaScriptに時間を投資することは、長期的に見れば報われるでしょう。

ここで誤解しないでください。私はJavaScriptフレームワークに対して偏見を持っていません。それは正反対です。それらの多くは、より読みやすく保守しやすいコードを書くのに役立ちます。多くの場合、デバッグが容易な、より抽象的なコードを記述できます。

しかし、JavaScriptエコシステムはかなり急速に進化しています。新しいフレームワークが作成されています。新しい機能が既存の機能に追加されています。そして最も重要なのは、Angular 1など、今日最もホットなフレームワークの多くが最終的に置き換えられることです。

そのような状況でも、特定のJavaScriptフレームワークの知識はWeb開発者にとって十分だと思いますか?

それとも、これらすべてのライブラリとフレームワークが基づいている言語が内部でどのように機能するかを理解する方が良いでしょうか?

JavaScriptの基礎に関する確かな知識をお持ちの場合は、新しいフレームワークを使い始めるときに慣れておく必要があるのは、その構文だけです。抽象化のすべてのレイヤーの下にあるため、基本的なルールは同じになります。それはまだ単なる古いJavaScriptです。

知識が単一のJavaScriptフレームワークのみに限定されている場合、新しいフレームワークを学ぶのに苦労するでしょう。多くの場合、さまざまなフレームワークがさまざまなJavaScriptの原則に基づいています。長期的には、さまざまなフレームワークを理解し、それらに記述したコードをデバッグするためにより多くの時間を費やすでしょう。

すべてのJavaScriptフレームワークとライブラリは、必然的にそのVanillaコアに基づいています。

これは、純粋なJavaScriptの知識が長期的には必須であることを誰にでも納得させるはずです。これは、成功する開発者、特に主にJavaScriptエコシステムで作業する開発者にとっての前提条件です。

個人的体験

少し前まで、私は弁護士からWeb開発者への旅を振り返りました。最初のJavaScript関数を作成してからすでに18か月が経過し、10か月目はプロのフロントエンド開発者として働いています。

以前にプログラミングの経験がなかったので、JavaScriptを学ぶ正しい方法を見つけることがどれほど困難であったかを今でも覚えています。私は効果的な学習者になるために多くの異なる方法を試しました(そして今も試しています)。それらのいくつかはよりやりがいがあり、いくつかはより少ないものでした。

最も重要なことは、最初から純粋なJavaScriptを学ぶことに重点を置いたことが、私にとってどれほど役に立ったかを強調することはできません。フレームワークは後で登場しました。

現在、私はReact-Reduxスタックを使用しています。それでも、VanillaJavaScriptの知識のおかげで解決できる問題に遭遇することがよくあります。これらのバグは、特定のフレームワークの知識だけで解決するのははるかに困難です。

ReactまたはAngular2を学習しても、オブジェクトが参照によって渡されることや、クロージャがどのように機能するかはわかりません。フレームワークによってもたらされる抽象化の下でこれらの概念を理解しようとすることは、はるかに困難です。これにより、単純なJavaScriptの概念が理解しにくくなります。

さらに、JSX(React、Vue、Inferno)またはTypeScript(Angular 2)を使用している場合は、その上に別の抽象化レイヤーがあります。

これらのフレームワークが内部でどのように機能するかを理解したい場合は、最初にJavaScript自体がどのように機能するかを知る必要があります。

お気に入りのフレームワークのソースコードを読むことで、純粋なJavaScriptの知識テストできますこれにより、内部でどのように機能するかがわかるだけでなく、独自のコードで使用できるロジックについても多くのことがわかります。アプリケーションで多くの魔法をかけているように見えるフレームワークの関数は、基本的なJavaScriptの概念の単なる構成であることがわかります。

私が学ぶことができる何かをください

あなたが今尋ねているかもしれない質問は、「私がバニラJavaScriptのまともな知識を習得するのを助けることができるいくつかの良いリソースは何ですか?」です。

JavaScriptとそのフレームワークに関するコースや本はたくさんあります。しかし、それらのいくつかは、包括的な方法でバニラJavaScriptを教えることを目的としています。それらのほとんどは、特定のJavaScriptテクノロジーに特化しています。

しかし、まだいくつかの良いものがあります…

Eloquent JavaScriptは、JavaScriptの基本だけでなく、プログラミング全般の基本も教えてくれます。あなたがすでに高度な開発者であるならば、この本はあなたにJavaScriptとそのコア原則についての新鮮な視点を提供します。

もう1つの優れたリソースは、KyleSimpsonによる本シリーズYouDo n't Know JavaScript(YDKJS)です。カイルは本当に教える方法を知っています。高度なJavaScriptの概念に関する彼の説明は初心者向けであり、詳細に説明しています。本の単なるタイトルは、あなたが何を学ぼうとしているのかについてのヒントをあなたに与えるでしょう。「Up&Going」、「Scope&Closures」、「this&Object Prototypes」、「Types&Grammar」、「Async&Performance」、「ES6&Beyond」。JavaScriptの関数型プログラミングに関する新しい7冊目の本もあります。

Eloquent JavaScriptとYDKJSの優れた点の1つは、無料で入手できることです(提供されているリンクを確認してください)。しかし、本当に役立つと思ったら、購入して作者をサポートすることを忘れないでください。

あなたがもっとビデオコースの人なら、カイルのオンラインコースを見ることができます。トピックは同じなので、あなたができる最善のことは、彼の本の仲間としてそれらを見ることだと思います。ただし、これらのコースは有料です。

私が役立つと思うもう1つのビデオコースは、Javascript:AnthonyAliceaによる奇妙な部分の理解です。JavaScriptの内部で何が起こるかを親しみやすい方法で説明します。プロトタイプの継承、関数型プログラミング、スコープチェーンなどの高度な概念について説明します。

今すぐVanillaJavaScriptを学ぶ

バニラJavaScriptの学習に貴重な時間を費やしても、後悔することはありません。バニラという言葉が含まれているだけでなく、プログラミングスキルにも有益な影響を与えます。

私にとって最良のトレードオフは、純粋なJavaScriptを学ぶことで、特定のフレームワークに時間を費やすよりも、長期的にははるかに多くのことができるということです。フレームワークは単なるショートカットです。内部的には、すべてJavaScriptです。

使用しているフレームワークに予期しない動作が発生する状況が発生します。このような場合、ソースコードを調べてこのバグを調査する必要があります。多くのフレームワークにはまともなドキュメントがありませんが、かなり複雑なコードがあることを述べましたか?でもねえ、ケーキだよね?あなたは確かにすでに多くの時間をバニラJavaScriptの学習に費やしました。またはまだですか?

この投稿から覚えておくべきことは1つだけです。

Vanilla JavaScriptの知識は、はるかに優れた開発者になるのに役立つことを常に念頭に置いてください。限目。

この記事が気に入ったら、拍手してください。よろしくお願いします。

この投稿はもともと私のブログで公開されました。

Twitterで会いましょう?

デビッドコパル(@coding_lawyer)| ツイッター

David Kopal(@coding_lawyer)からの最新のツイート。フロントエンド開発者@ataccama | 元弁護士| ブロガー… twitter.com