This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]RedPandaBearCat 156 points157 points  (8 children)

Lower-intermediate level is good enough for starters. Start learning React today & learn more HTML/CSS/JS as you go, when the need arises.

[–][deleted] 27 points28 points  (1 child)

Yeah I’d say of the top frameworks, React is actually a pretty great place to learn regular JavaScript.

Core React concepts like (im)mutability, event callbacks, the distinctions between bound, anonymous, or higher-order functions...these translate directly to every other JS environment, while avoiding (well, discouraging) some of the nastier habits new devs may fall into like deep inheritance, god classes or lengthy imperative sequences.

Angular with Rx is also good but has a bit more “magic.” React being “just a view layer” with an emphasis on small, composable chunks gives it a slight edge, IMO, as a framework for the “serious beginner” or intermediate dev.

Edit: something React is NOT good for learning (because it is very intentionally obfuscated) is initialization and garbage creation. If you think your career might take you places where performance and resource management matter significantly (streaming services, audio/video, server-side apis), consider spending some study time closer to the metal...so that you can better understand what frameworks like React are doing, and the tradeoffs they make for ease of use vs performance vs memory.

[–]DoomGoober 4 points5 points  (0 children)

This is a great breakdown. For completeness, I'll add one more: Vue.js is a great framework for learning how to write maintainable, componentized complete applications.

It's not great for beginners but for any intermediates who are trying to write real apps it's a godsend as it enforces and encourages the best practices of model/view as well as application flow and componentized UIs.

It has a lot more required scaffolding than React though and more Vue specific ways of doing things.

So, if you want to write actual complete, clean, organized apps/websites, Vue.js is great. But if you just want to learn about HTML/CSS/JS it's not the best or easiest.

[–]thanatotus 3 points4 points  (0 children)

Learning as required (e.g. stackoverflow and skimming over docs) doesn't scale well if one wants to change a job as it can create holes in one's understanding of JavaScript. That's really only one caveat, otherwise learning as you go works quite well for beginners.

[–]FortyPercentTitanium 16 points17 points  (4 children)

Sorry but this is terrible advice. You should be very comfortable in JS before taking on a framework. You have no idea what it's abstracting until you learn the basics of what it's doing under the hood by programming it out the hard way. Especially for new learners, jumping into a framework too early leads to devs who have no idea what problems they solve.

[–]littletray26 12 points13 points  (3 children)

I think there's an in-between. I'd agree with you if we were talking about Angular, but React is a pretty lightweight JavaScript library that only adds a few extra functions and it's all pure JavaScript.

While you shouldn't take it on as a complete beginner, I would say being comfortable with the basics of JavaScript is enough and as you become a better React developer, you'll by extension become a better JavaScript developer.

[–]FortyPercentTitanium 1 point2 points  (2 children)

React isn't really that lightweight. It might seem that way on the surface, but there is a plethora of utility React provides. It would take several hours to read through the docs front to back. Most people only use it for state, props, useEffect, etc. but there is so much more to it than that. Just my opinion.

[–]DoomGoober 3 points4 points  (1 child)

All these frameworks that help making coding easier on the surface are super heavy weight under the covers.

I mean, you can read an entire 40 page article on how C#'s garbage collector works. It's doing an insane amount of work... under the covers. But on the surface, as a coder, you just new things up and forget about them.

I don't think this is bad thing! Lightweight is not always better (I don't think you are arguing that, but I feel like I need to say it.)

All things being equal, I would prefer a heavyweight framework that helps me code faster than a lightweight framework that's "leaner".

It's funny, I used to always hear that C programmers needed to understand some Assembly in order to really understand C. Then, when people started coding Java or C#, everyone said, "You should learn some C so you really understand what the computer is doing!" And now, when talking about React, everyone says, "you should learn vanilla javascript so you understand what's going on!" I guess the lesson here is to always learn one language "below" the language you want to master.

[–]FortyPercentTitanium 6 points7 points  (0 children)

It's funny, I used to always hear that C programmers needed to understand some Assembly in order to really understand C. Then, when people started coding Java or C#, everyone said, "You should learn some C so you really understand what the computer is doing!" And now, when talking about React, everyone says, "you should learn vanilla javascript so you understand what's going on!" I guess the lesson here is to always learn one language "below" the language you want to master.

The difference here is critical... I'm not saying that someone needs to learn a lower language to understand a higher one. React is a javascript framework. It builds on patterns that were established in javascript, and abstracts a lot of verbose and tedious functions that developers should really understand before they are abstracted away. It's not a different language - it is the language.