5 ms·
Ah react, the biggest crap of them all. A 12 year old with basic programming skills is definitely capable of designing a better "framework". Yes, everything fro
by axegon_ 6y ago
Ah react, the biggest crap of them all. A 12 year old with basic programming skills is definitely capable of designing a better "framework". Yes, everything frontend is quoted because it's nothing more than a joke at this point. Back to react, and ignoring all the underlying problems coming from the pile of crap that is js, let's kick things off with jsx. The fact that someone developed their own syntax(I'm not sure if I should call it syntax or markup or something else) makes it idiotic: It's another step added to the gibberish generation. It's full of esoteric patterns and life cycles which don't exist anywhere in the real cs world. React alone provides little to nothing so again you need to add another bucket of 1000 packages to make it work. Compare it to a solid backend framework that isn't js: all the ones I've ever used come with batteries included. The concept of components and the idiotic life cycles turn your codebase into an unmanageable pile of of callbacks and sooner rather than later you have no clue what's coming from where. Going into the size, the simple counter example on the react page is 400kb. Do I need to explain how much stuff can be packed in 400kb? For comparison, I had tetris on my i486 in the early 90's which was less than 100kb, chess was a little over 150kb. Christ, there was a post here on HN about a guy who packed a fully executable snake game into a qr code.
- ymolodtsov 6y ago> Ah react, the biggest crap of them all. A 12 year old with basic programming skills is definitely capable of designing a better "framework". You're literally a stereotypical Hacker News commenter. I also find the modern frontend a bit too complicated but this is just an unreasonable statement.
- axegon_ 6y agoYou'd be right if I had not given arguments for my statement. I did as a matter of fact.
- com2kid 6y ago> let's kick things off with jsx. Of all the problems I have with React, and I do have a few, JSX is not one of them. If you are going to be using a language to generate HTML, you are either going with a component approach that wraps HTML in some object library that then spits out HTML, or you are stuck with a templating language of some sort. (Or string concatenation, but I refuse to consider that a valid choice for non-trivial use cases.) JSX is a minimal templating language on top of HTML. Do I think effects are weird and am I very annoyed at how they are declaration order dependent? Yup. But the lifecycle stuff is not that weird, or at least the latest revision of it isn't (earlier editions... eh...). The idea of triggering an action when a page is done loading has been around for a very long time, and that maps rather well to JSX's lifecycle events. > React alone provides little to nothing Throw in a routing library, and you are pretty much done. Now another issue I do have is that people think React optimizes things that it in fact does not, so components end up being re-rendered again and again. Throw Redux in there and it is easy to have 100ms latency per key press. Super easy to do, and avoiding that pitfall involves understanding quite a few topics, which is unfortunate. The default path shouldn't lead to bad performance. > The concept of components and the idiotic life cycles Page loads, network request is made. Before React people had listeners on DOM and Window events instead, no different. Components are nice if kept short and sweet. "This bit of HTML shows an image and its description" is useful. > Do I need to explain how much stuff can be packed in 400kb? No, I've worked on embedded systems, I realize how much of a gigantic waste everything web is. But making tight and small React apps is perfectly possible. And yes, if you pull in a giant UI component library things will balloon in size. It is a common beginner mistake, I made it myself when I first started out. Then I realized it is easier for me to just write whatever small set of components I need myself, and I dropped 60% of my bundle app size. In comparison, doing shit on the backend involves: 1. Writing logic in one language that will generate HTML and Javascript 2. Debugging the HTML and Javascript generated in #1. And then someone goes "hey you know what's a great idea? Let's put state on the back end again! And we'll wrap it up behind a bunch of abstractions so engineers can pretend it actually isn't on the back end!" History repeats itself and all that. SPAs exist for a reason. They are easier to develop and easier to think about. And like it or not, even trivial client side functionality, such as a date picker, requires Javascript (see: https://caniuse.com/input-datetime https://caniuse.com/input-datetime). SPAs, once loaded, can be very fast and scaling the backend for an SPA is a much easier engineering task (not trivial, but easier than per user state). Is all of web dev a dumpster fire? Of course it is. A 16 year old with VB6 back in 1999 was 10x more productive than the world's most amazing web front end developer now days. Give said 16yr old a copy of Access and they could replace 90% of modern day internally developed CRUD apps at a fraction of the cost. (Except mobile support and all that...) But React isn't the source of the problem, or even a particularly bad bit of code.
- axegon_ 6y agojsx is a retarded idea because it adds an abstraction over something brutally simple(html). Abstractions are good when you are trying to make something complex user-friendly and simple. > Throw in a routing library, and you are pretty much done. Ok routing library, now make an http request please without involving more dependencies.... > Throw Redux in See, exactly what I said: we are getting to the endless pages of dependencies. > 100ms latency per key press 100ms latency??!?!?!? In my world 100ms are centuries. > 1. Writing logic in one language that will generate HTML and Javascript 2. Debugging the HTML and Javascript generated in #1. I don't have a problem with that. At the end of the day you know exactly what you want to achieve and what the output should be, whereas react it's a guessing game each time. We are at a point where web "developers" wouldn't be able to tell you what html is. With server-side rendering, from maintenance perspective you have the luxury to use grep and not rely on post-market add ons, plugins and ide's in order to find and change the class of a span. The term SPA first came to my attention when I was in university over 10 years ago. My immediate thought was "this is retarded". Over a decade later, my opinion hasn't changed.
- parzivalm 6y ago> jsx is a retarded idea > My immediate thought was "this is retarded". It's generally frowned upon to use retarded in this manner. Not only is it insulting to people, it brings down the overall tone of your argument.
- com2kid 6y ago> 100ms latency??!?!?!? In my world 100ms are centuries Yup that's crappy. The ease of it happening, the Work At A Startup page used to have this issue (may still, haven't looked lately) shows that it isn't hard to make accidentally happen. As I said, it is a weakness of the system. > sx is a retarded idea because it adds an abstraction over something brutally simple(html) Have you seen how minimal of an abstraction jsx is? It is a simple rewrite to a JS function that spits out HTML, but JSX is super nice to write and more grep-able than the majority of other templating systems. I have a predisposition to not liking templating systems, but JSX is the best part of React. Notably it doesn't invent it's own control flow language, unlike most competitors in this space. > My immediate thought was "this is retarded". Well the most famous SPA is gmail and it's rather popular, you may have heard of it. It is bloated now, but when it first debuted it was really good. Webmail sucked, then suddenly it didn't. Google maps. Outlook web client. Pandora. Online chat rooms, In browser video chat, (now with cool positional sound!) SPA just means you are just fetching the minimum needed data from the server to fulfill the user's request, instead of refetching the entire DOM. They are inherently an optimization. Non-SPAs can be slow bloated messes as well, e.g. the Expedia site.