DEV Community

Discussion on: React Project Architecture

Collapse
 
jonrandy profile image
Jon Randy 🎖️

Lucky you, I'm hating it more by the day 🤮

Collapse
 
spock123 profile image
Lars Rye Jeppesen

It's so messy, it feels old

Collapse
 
dhruvindev profile image
Dhruvin

Wait until you try angular

Thread Thread
 
cgatian profile image
Chaz Gatian

You litterally need to pull in so many libraries in order to get a React app off the ground.... Axios, Formik, Yup, a CSS modules lib just to name a few! I wouldn't recommend React for anyone building an app with more than 10 people. Once you go beyond that 10, everyone's opinions start entering into the codebase and you get a hodgepodge of component patterns just littered everywhere.

Thread Thread
 
cgatian profile image
Chaz Gatian

The funny thing is, a lot of the suggestions made in the OP are things Angular has been doing since day one. In fact, I think React needs to adopt even more of the patterns. For example, lets talk naming conventions. Making a component with /MyWidget/index.tsx is undesirable, make it components/my-widget.component.tsx. Also, stop placing hooks in a generic hooks.ts, use my-widget.hooks.ts.

Thread Thread
 
kachidk profile image
Nwanguma Victor • Edited

You don't need formik or yup, to start a react app, for you to talk about axios like that means you don't fully understand what axios does (Axios is a promise based HTTP client for the browser and Node.js. Axios makes it easy to send asynchronous HTTP requests to REST endpoints and perform CRUD operations. It can be used in plain JavaScript or with a library such as Vue or React.).

The only thing important to start a react app with, is a styling library (css modules, styled components, emotion and styled jsx) which is not so complusory and a routing library (react-router).

If your code base is littered because of different people's opinions it's not because of the flexibility of React (which I enjoy).

It's because you have not established rules in your team guiding how the codebase should be

Collapse
 
dhruvindev profile image
Dhruvin

Why hate?

Collapse
 
jonrandy profile image
Jon Randy 🎖️

Principally - JSX... It's a total abomination. Like being back in the bad old days of PHP all over again

Thread Thread
 
jonrandy profile image
Jon Randy 🎖️

Also, the hooks stuff... feels like an ugly hack to patch over bad design

Thread Thread
 
jonrandy profile image
Jon Randy 🎖️

I've used Vue and RiotJS also - and they're soooo much nicer to work with - totally intuitive, especially RiotJS which just feels like a natural extension to vanilla HTML/JS

Thread Thread
 
spock123 profile image
Lars Rye Jeppesen

Agree.. Angular (modern) is also amazing.
Built in native support for Observables and Typescript is just amazing.

Thread Thread
 
dhruvindev profile image
Dhruvin

Agreed jsx does feel like php, but it is so quick to prototype and provides so much better project structure as compared to angular where you need to create html + js + cs, uuh so many files to work with.
I have no experience with vuejs, would to recommend to learn it ?

Thread Thread
 
dhruvindev profile image
Dhruvin

ps, by project structure I mean the flexibility to add anything anywhere, there are no strict rules to follow.

Thread Thread
 
jonrandy profile image
Jon Randy 🎖️ • Edited

Yes, and people frequently do follow no rules... leading to the kind of trash I used to see in PHP that I hoped I'd never see again

Thread Thread
 
dhruvindev profile image
Dhruvin

Great for freelancing, nightmare for bigger companies

Thread Thread
 
cgatian profile image
Chaz Gatian

@dhruvindsddev In Angular you can have your HTML+TS+CSS all in one file. :)
When I open a React component I typically see 100+ lines of just hooks and startup code before getting to something interesting. When you finally make your way to the return sending back some JSX, the block is littered with different styles and opinions on how to structure, which makes it difficult to parse if it's not the style you're used to.

Thread Thread
 
jonrandy profile image
Jon Randy 🎖️

The same with RiotJS - out of the box