How do people React to my point of Vue
Hello, I’m Nick and I am yet another front-end developer and a vue fanboy.
Let’s try to travel in time. Imagine that you’re in the jQuery era, yes, that one huge file that does everything with a lot of jQuery plugins. Front-end worked and it did it’s job. Everything was pretty much fine until a player like Angular appeared. I will ignore all in-between solutions because they never hit that popularity.
When I found out about angular everyone was like “logic in html? it should be separated! we had that in PHP and now we moved to REST APIs for a reason!” yes, the part with the reason to move away from logic-in-html was really the maintainability thing. Any change in technology is always about maintainability. That is the main requirement today. While maintining PHP in HTML was hard, maintainting Angular was easier than jQuery, even if it seems similar. Did PHP do it’s job? Yes. Did jQuery do it’s job? Yes. Did Angular do it’s job? Yes. People moved that way because they wanted something easier to maintain, not because you couldn’t do something in PHP/jQuery. The problem for me was learning curve, you can not apply any knowledge from PHP in jQuery, no knowledge from jQuery to Angular. Migration is painful.
“Hello, I’m a new thing made by Facebook, I am better then Angular, I am insanely fast, I am extremely flexible and easy to maintain.” Well, nice, let’s try to learn. Same thing again, learning curve, now they have HTML in logic and people hate it. Let’s make it clear, I like JSX, but it’s really different from anything that was there before. There is a lot of things that are React-specific and as always migration is a pain. Is it better then Angular? Yes. Does React do it’s job? Yes. Is it easier to maintain? Yes. But there is the downside, you have to think totally different from everything you knew up until now, and Facebook, instead of using other people’s efforts tend to invent their own. We invent JSX (instead of using E4X), we use components in .jsx, we don’t care that WHATWG are working for few years on adopting a syntax for Web Components and Shadow DOM. We will make it hard for you to learn react even if you know all the specifications.
Hey, I’m Vue, and I just try to have the cool things from any specs and front-end frameworks/libs while being as easy to learn as possible. You like Shadow Dom / Web Components with scoped styles? We have that. You like Angular’s templating language? We have a slightly modified version of that. You like React’s JSX? We have that too. You like pug(jade), sass, stylus? We have that too. You like Redux? We have a slightly modified version of that again (Actually even redux itself). The learning curve. If you know React and/or Angular and/or Web Components it’s easy. But it comes strange again, “Styles in the same file?”, people hate it. Let’s face it, any component is made of three parts, template, styles and logic. When people concatenated logic with template people hated it, but it’s not that bad. Adding styles in the same file makes perfect sense if it is a part of that component. What is a really re-usable component? Isn’t it a single file that has everything you need so you can just copy-paste the file? Is it better than react? I’d say yes. Is it easier to maintain? Slightly. Why do people still do React? Well, try to remember what happened to knockout and all other good solutions available at any moment. They never became popular. Were they good? Yes. Better than alternatives? Yes. Backed by a Microogle/Facesoft/Goobook? No. We all are people and we all are vulnerable to marketing, but I want to ask you something. Find at least 5 solutions in front-end world (there are hundreds) that you don’t know yet, take a 5 minute look in the docs and choose one that is decent. Spend 4 hours of your weekend with it and find at least 2 ways how is it better than the main technology you use today (there’s always at least 2). Don’t be the guy like “This sucks because it’s not how I use to do things now”. When you see something different, try to find out the reason why is it that way, when you find that, you either like it or hate it, but at least you’re informed.
Vue is not the “universal way-to-go” for everyone, it’s universal for me, I can do whatever I want with it. Today I use decorators (which is a proposal for the ECMAScript), JSX (which is a popular templating language) and scoped styles (which is a part of shadow dom). I didn’t learn almost anything vue-specific. Any technology dies eventually. A big part of my knowledge will be useful when the technology I use will die, will yours?