As a Backend developer in .NET, I am willing to start diving in Frontend deeper but am not sure what to choose or what language or framework is used most. Any advice will be really helpful.
Anecdotally I've noticed backend devs often prefer Angular, and frontenders prefer React - just seems to be how they align to experience/expectations.
React is the most popular 2018.stateofjs.com/front-end-frameworks/overview ...and without any real context it's what I'd recommend as a general response. I often describe it as being "the jQuery of the SPA era" - a stable, popular option with a really big community.
I'm sure Google can get you tons of learning resources on Web Development. Anyway, I'll suggest the one of the approaches here:
FYI, Frontend development doesn't end at what you see on screen. There's lot going on behind the curtains
MOST IMPORTANT STEP: Pretend for a month or two that there exists no web frameworks out there.
And then, start building static web pages with just HTML, CSS and JS. Like Landing Pages of Website. Spend more and more time on knowing basic fundamentals of HTML, CSS, JS and how all three are interlinked
And then, introduce auto-refresh on change or hot-reloading, bundling in your website through a library like webpack, sounds scary but its not. Just Google -- How to add webpack..., google will get you there.
By now, you'd be serving your website locally hosted on nodejs. You'll realise the magical things that Webpack can do(Checkout their plugin section)
And then, try building a Singe Page Application(SPA) with the same technologies above.
You'll start to realise the pain of developing it..
Now you checkout top three popular frameworks for building SPA -- React, Vue and Angular (not necessarily in order).
You'll now start either appreciating/hating the amount of abstraction web ecosystem has created for developers to make them stay focused on business logic instead of things around the code.
Based on your above opinion, you'd be either continuing building web applications or might not comeback to Web development anytime soon.
P.S. I'm a backend developer too but I love Web development.
Cheeers!
My answer will be little subjective because I am a React Developer for some time now. It all depends on how much time and effort you want to put in to start with. If you want to learn basic concepts quick then start working on improving your skills I would say start with React. ( assuming you have some JS experience) then move on to React Native. React, as a UI library, has shallow learning curve and concepts are pretty straight-forward. It comes with the fundamental core library and you take it from there with your own components or shared modules.
If you have plenty of time and want to learn everybody is so adamant about, go with Angular. I have barely have any experience with Angular so I can really talk about it, won't be fair, but as far as I know, it is a framework and comes with all the tools you need. It is pretty opinionated so you have to go with what they gave you. And over the years it got so complex that learning curve is pretty steep.
To stay relevant in today's market, you're probably better off learning Angular, React, or Vue.
I'm a React guy myself. I've been on the market for a new job since last summer and React is definitively hot at the moment. For what it's worth, I'm into NextJS these days, which is a React framework, and it is an absolute pleasure to work with. Hashnode is build using NextJS.
That being said, at the end of the day, learn vanilla javascript. Pick one of these front-end technologies to do it but make sure your end goal is to learn javascript and not any one framework/library in particular.
Also note the distinction between framework and library. This might influence your decision.
The most popular front-end frameworks (at the moment) is React and Angular (followed by Vue).
React has small learning; hence it's popular among Junior Developers and personal projects on GitHub. Angular offers an enhanced developer experienced by providing features straight out of the box, e.g., routing, CLI, dependency injection (great for state management), TypeScript. In React you have to depend more on third-party libraries and determine the right architecture which slows down development and productivity. In Angular, you can create a service and use dependency injection to efficiently manage state across multiple components allowing for separation of concern. While in React you have to use libraries like Redux which will dramatically increase your code foot-print. Since React is un-opinionated and easier to create script-kiddy code, it could lead to a messy code-base. But this can easily be fixed by creating an opinionated style guide for syntax, conventions, and structuring for your team. Finally, I believe Angular reduces the complexity that other frameworks tend to hide under the hood.
If you're coming from a .NET background and have experience with C# or even Java you might prefer Angular since TypeScript has a few similar concepts such as interfaces, decorators, private attributes, classes, getters and setters, and of course it's strongly-typed.
With that said, I don't think one framework is superior to the other. With any front-end framework, you can create an awesome application as long as you understand the fundamentals of programming. Most companies will hire front-end developers based on your JavaScript and programming fundamentals and not because you know a specific framework. Instead, pick a framework, learn it and then move on to the next one.
Until others chime in, you can check out some answers on this post
Bridget Sarah
Full Stack Mobile App Developer
I started off as Frontend Developing, but now I've ventured into back-end. The latest trends as you will see is React, Angular JS and Vue. Angular JS is certainly one to watch and would recommend as opens up pathways at least to the full Angular Framework, including full JavaScript and TypeScript. Keep us updated would love to read and catch up how Backend developers are now coming forward on the front-end and the challenges they face :)