The “what language(s) should I learn first” thing really up to what YOU want. If your goal is to get a software development job, find what’s common in your country/city when it comes to hiring devs; for example, web dev companies in my city really really love .NET (C#) and Java with some Angular/React as the frontend, although I’d say Angular is more popular here.
Also, what branch of software do you want to work on? I’m assuming it’s web dev so I’d start by just learning the language until I feel so comfortable that learning frameworks and libraries is a 1 month walk in the park.
Backend and React are different things; React is Frontend so for Backend, if you want to use JS you may want to learn Express since it’s the most popular one but there’s also Hapi, Nest, Sails, Meteor and more. For the frontend I’d choose React without a doubt but don’t sleep on Vue and Angular just yet; I bought a book about Angular 6 and it paid off (for React I just read the docs and got an Udemy course).
The client or frontend doesn’t care what you use as a backend as long as you have a backend to consume; just learn what feels comfortable.
My recommendation is stay away from the frameworks and learn the core languages. Find the one you like the most and learn that language thoroughly.
Frameworks make your job easier, but it’s important you understand how the code works without one.
At the end of the day, they all pay $. It’s just about finding the one you like most, because if you hate it, then you’re likely going to do poor work.
I’m already familiar with the core language of HTML, CSS, and JS. That’s why I started to learn frameworks. I started to learn React here, but eventually I started to get overwhelmed with how it’s laid out, and so I saw there is another framework that is close to React, but have some differences. I chose to learn Svelte, because of the reactivity of the app. It updates everything in my element when there is an event that changes the data by assignments. That’s what I really like most about Svelte. It is also smaller than React is that I really liked too. Another thing I also liked about it is that there is no Big Mother Company behind the framework like React is with Facebook.
The best reason why Svelte is better *in my opinion *, is of how Svelte is reactive. So if there is a change in variable, the HTML DOM will change accordingly. So you don’t need to put an event listener if an input gets a different input. Just give it a : (bind syntax on Svelte) and assign it to a specific element you want to be changed, and then Voila, the element will change if the input get a new input.
Another feature that I like is that there is no Virtual DOM, and Svelte has smaller file size, compared to React. Another reason that I really like is how the CSS is always locally scoped, so when you are putting in a component from a different file, the CSS will not overflow to that component. It will only use the local CSS. Here’s an image explaining it.
In the image above, I have applied a font-size of 50 to the h1. You can see that both components have h1, but it will only style the h1 inside it’s own component which is App.svelte and it won’t style the h1 inside Tasks.svelte.
Edit: Just got and read this, and the creator of Svelte, Rich Harris, have explained that Svelte is not really a framework. Since Svelte 3 has came, he explained that it’s more like a language that uses a base like Elm. Check it out here:
Well at its core, Svelte is a compiler. Sapper is a framework using Svelte.
I do like Svelte, but just like with Vue the DSL can get a little annoying sometimes (it’s both good and bad). There is just something more familiar about writing React code, even if it takes more code and can get a little messy. Switching from React to a more DSL driven approach can be a bit hard I feel, but switching back to React never really bothers me because it’s fundamentally so close to just writing JS.
The use of components and the communication between components in React also feel less weird. But that is likely just because I’m not that familiar with Svelte (or Vue). But I definitely remember writing a single component app in Svelte and thinking it was really nice but then trying to refactor it into components and getting very lost. It does have some cool stuff with components as well, you just need to learn them.