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)
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 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
When you're ready to learn React or Node, checkout my books ;)
I create online courses for Pluralsight, Lynda and many more. 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 if you want to book a session for your team.
Top comments (6)
Yes, the answer is "None" in 2018.
The Longterm-Plan of Angular, React, Vue and others is to use the Web-Standards instead of Custom-Framework-Implementations.
This means that you need to learn how Web-Standards work and you know how the Framework works.
An greate Example is WebComponents.
Currently, each Framework have theirs own Component-Behavior with Property-Binding, Lazy-Loading, Component-Styles etc...
This will be replaced with Web-Standards like WebComponents.
You could say these Frameworks (or a Part of it) are only Polyfills for the future Web.
stenciljs.com is a greate Example for WebComponents in 2018.
All components created with StencilJS can be used independently in all Frameworks or without a Framework.
Because, it is only a WebStandard.
Ha, interesting!
Why not use the web standards now? Not like writing HTML, CSS or plain JavaScript is tied to success of any corporation is it?
Who defines the Web-Standard ?
I think the biggest lobby is probably whatwg.org
whatwg Members: Apple, Google, Facebook, Microsoft, Mozilla...
All of our popular WebFrameworks were created by Google, Facebook, Microsoft..
Probably they test the technique first in the field and then convert it to a webstandard.
These frameworks are like user interfaces for developers. These include either polyfills or native implementations. However, standardizing takes much longer than developing the frameworks so that they are always far ahead.
I think eg. to es6 transpilers or simliar. There you regularly use functions from the future.
The same companies that design our frameworks also set the web standards.
To be fair, and pick up a bit of both worlds, I'd say give a look at Aurelia because it is both build on top of the Web Components standards and also it is designed in a way that you basically use vanilla typescript/javascript to accomplish what you need, and also it's similar to angular so you get a pretty good deal for giving it a try
perhaps not the most famous but I do consider that you don't get any harm on learning this specific framework, and also I do support what you say in the article
Au contraire, my belief is, learn all of them. :)
Mind that when i say learn, i include how they tick, because it helps you pick'.
But not only that, by learning patterns that drive them, you will be a a significantly better developer after.
I recon Angular would be a lot less popular if people know how it ticked.
Well that' and if google was not supporting it.
Also, if you can forgive my animosity, **** frameworks.
Frameworks like are like handlebars.
Once you know how to code without them, they will only really be in your way.
Vue.js