Which JavaScript frameworks should you learn in 2018?
Tags: react, javascript, webdev, programming
Published: 2018-06-06 16:23:41

---
title: Which JavaScript frameworks should you learn in 2018?
published: true
description: 
tags: react, javascript, webdev, programming
---

![](https://cdn-images-1.medium.com/max/1600/1*pPJq-yvXA13X4g87Lc4NJQ.png)

Let me first define what I think a coding framework is because the word is debatable. I think a framework is a library that defines structures about every aspect or layer that can make the task of creating applications easier. By layers, I mean things like databases, models, controllers, views, presenters, networks, etc..

Frameworks try to solve most of the big and known problems that are usually encountered by their applications. They have built-in design decisions that you do not need to worry about. They also have carefully-crafted guidelines.

Good frameworks also have smart defaults and follow the convention over configuration concept. The leader of this is the **Ruby on Rails** framework, which is one of my favorites. In JavaScript land, the leading JavaScript framework out there is **Angular**. (It's not **React.js** because [I don't think of React.js as a framework](https://dev.to/samerbuna/yes-react-is-taking-over-front-end-development-the-question-is-why-4mad))

* * *

Now that we cleared this point, let me answer the question in the title: **Which JavaScript frameworks should you learn in 2018?**

My answer: **None.**

Let me explain why.

Unless you are in a job that requires you to use a framework, don’t learn frameworks just for the sake of learning. I am talking about learning how to **use** a framework. This is a knowledge that will expire fast.

On the other hand, you should learn **how frameworks work**. That is very valuable knowledge. If your motivation to learn a framework is to land a good job, knowing how frameworks work is far more impressive than knowing how to use them.

> Learn how to use a framework only when you actually need&nbsp;it.

I think there are far more important skills to learn to become a more in-demand developer:

- Learn everything you can about the JavaScript language itself, its bad parts and good parts, and all the modern features it recently gained. Learn how to build and use the various data structures in JavaScript.
- Learn the JavaScript runtimes like Node and Browsers and learn how they are single-threaded. Learn their APIs and limitations. Learn about the event loop. Learn about the VM’s call stacks. Get comfortable with browsers’ DevTools.
- Learn how to share code between clients and servers and preload initial data. Learn how to minimize JavaScript loading and parsing in browsers. Learn how to load JavaScript on demand.
- Learn the merits of functional programming and use its concepts where you can. Learn how to be declarative instead of imperative when you can.
- Learn about small JavaScript libraries which do one thing and do it well. Pick libraries with the smallest API and don’t focus on the APIs but rather on what these libraries enable you to do.
- Learn how to build scalable data APIs (take a look at GraphQL).
- Learn the power of CSS and how to use it to minimize your applications JavaScript code. Learn the new Flexbox and Grid layouts. Learn about UI-responsive design.
- Learn how to add static types to JavaScript with TypeScript (or Flow) and learn where you should focus on types vs testing.

Thanks for reading.

_This article was originally published [here](https://medium.com/@samerbuna/which-javascript-frameworks-should-you-learn-in-2018-ecea9a27617d)_

* * *

When you're ready to learn React or Node, checkout my books ;)

- [Learn React.js by Building Games](https://jscomplete.com/learn-react-js-by-building-games)
- [Node.js Beyond the Basics](https://jscomplete.com/learn-node-js-beyond-the-basics)

I create **online courses** for [Pluralsight](https://app.pluralsight.com/profile/author/samer-buna), [Lynda](https://www.lynda.com/Samer-Buna/7060467-1.html) and [many more](https://jscomplete.com/samer-buna). I also do **online and onsite training** for teams covering beginner to advanced levels in JavaScript, Node.js, React.js, and GraphQL. Email [training@agilelabs.com](mailto:training@agilelabs.com) if you want to book a session for your team.