tldr; Don't treat backend and frontend the same, they have very different concerns, also learn the things that came before frameworks, and why they were useful/included in frameworks to begin with.<p>While your intended backend and frontend are both javascript, they have very different concerns. I suggest you learn them in as much isolation as you can, before attempting to mix the two.<p>I would highly recommend that you do NOT start from learning react. React is a line in a very long story that the JS community has been living. Please strive to understand how that story started, and where react fits in, and what methodologies are being used in the libraries/frameworks that are popular today.<p>Rather than starting with and binding yourself to react, I'd suggest you start with the minimum you need, and progress to different libraries as you need them, and realizing the actual need/niche for frameworks.<p>A progression might look like this:<p>1) HTML+CSS+JS - Basic static, well designed pages<p>2) HTML+CSS+JS+jQuery - 1) + simple interactions on the page, note that too much jquery will quickly become hard to reason about<p>2) HTML+CSS+JS+Databinding - 1) + declarative databinding (with a framework like Knockout) will introduce some structure into DOM updates over the jquery approach<p>3) HTML+CSS+JS+Databinding+Routing - 2) + a realization that knockout generally aims to work on one page at a time, but obviously sites have many pages, and SPAs can be beneficial in delivering instant-feeling user experience.<p>4) HTML+CSS+JS+Databinding+Routing+Components - 3) + realizing the need for separation and isolation between components to keep your sanity (both knockout.js and react offer components)<p>5) HTML+CSS+JS+Databinding+Routing+Components+Data - 3) Handling data from the server is obviously important, backbone has an oft-praised model system, and you could also flux pattern since you're interested in react.<p>5) Framework ? At this point, including x libraries to do all the things that you have found make your life easier may be less preferable to using a framework. Of course, this means you'll have to deal with the cognitive overhead of a framework but at this point, you should know exactly WHY you are using a framework, and start to distinguish the difference between how different frameworks bundle the parts.<p>Ex. the distinction between how knockout.js does databinding, how react does it, and how angular1 does it.<p>Ex. The difference between react's rendering methodology and backbone's (they both use a render function to determine what will be shown -- how is react different?)<p>I might suggest redoing a small app like TodoMVC with all these options (you can change it up by styling the frontend differently every time or something), I think a process like that leads to a more well-balanced understanding of frontend JS.