Angular vs React.js vs Vue.js - My Thoughts!
HTML-код
- Опубликовано: 22 авг 2024
- Angular, React.js or Vue.js? I get this question a lot! Let me share some thoughts on it with you!
Join the full React.js course: acad.link/reactjs
Or dive into Angular: acad.link/angular
Or explore Vue.js: acad.link/vuejs
Want to read instead of watch? Here you go! academind.com/...
Check out all our other courses: academind.com/...
----------
JS Framework Benchmark: github.com/kra...
----------
• Go to www.academind.com and subscribe to our newsletter to stay updated and to get exclusive content & discounts
• Follow @maxedapps and @academind_real on Twitter
• Join our Facebook community on / academindchannel
See you in the videos!
----------
Academind is your source for online education in the areas of web development, frontend web development, backend web development, programming, coding and data science! No matter if you are looking for a tutorial, a course, a crash course, an introduction, an online tutorial or any related video, we try our best to offer you the content you are looking for. Our topics include Angular, React, Vue, Html, CSS, JavaScript, TypeScript, Redux, Nuxt.js, RxJs, Bootstrap, Laravel, Node.js, Progressive Web Apps (PWA), Ionic, React Native, Regular Expressions (RegEx), Stencil, Power BI, Amazon Web Services (AWS), Firebase or other topics, make sure to have a look at this channel or at academind.com to find the learning resource of your choice!
That Vue is not backed by any big company is one of its biggest strengths. It created a very friendly and collegial community,where the contributors support each as the survival of everyone depends on the overall quality of the ecosystem.
Personal opinion -
Angular Pros:
1. Can be scaled to large teams
2. If you have a large team, and you are adding new members who are not super-experienced, it is less likely that their mistakes will cause catastrophic failure
3. Templates are separate - this means you can have your design team create the HTML and CSS and you can add your JS bits
4. Since all major dependencies are courtesy of the Angular team, low risk of dependency hell
Angular Cons:
1. Typescript makes things verbose, you typically would need more man hours to create the same functionality in angular than you would in React or Vue
2. Angular 1 to 2 major API breakages
3. Google uses Angular, but it is not used in their flagship products like Mail (eating your own cooking typically produces pragmatic decision making)
4. Angular JS team is seen as insular (and rightly so). Could break the APIs once again causing more grief
React Pros:
1. Componentization is a major plus, the fact that Angular 2 moved in this direction is telling
2. FB actually uses it to power their flagship product
3. Multi-device. Angular, while it has Cordova, is nowhere near as versatile as React
React Cons:
1. FB's dithering over licenses - this could cause other large companies to avoid using React - in case FB does an Oracle
2. JSX makes it difficult to separate responsibility between developer and designer
3. Lack of opinion on app structure can hurt if your devs are not used to designing and maintaining large scale front-end apps. You need to have developers who are Facebook level smart
4. NPM hell
Vue Pros:
1. Templates are separate
2. Has components
3. No Typescript as compulsory
4. No major licensing issues
Vue Cons:
1. Still young - there is a distinct chance as the framework matures unpopular choices may have to be made
2. No FB/Google scale users - largely a volunteer army. Could go the way of backbone and stop being super-actively maintained. Risk is especially triue for Vue packages
very good summary, Vikram
Usage of Typescript should be counted in PROs. But that is possibly my own biased opinion in favor of Typescript.
Typescript by choice is fine, but making typescript compulsory, I am not so sure about that. For instance, you can use React or Vue with Typescript, but they don't force you to do so
I disagree that JSX makes it any more difficult to separate responsibilities. A designer's job should be to tell you how a page should look. It's up to the developer to build that structure and put it to code.
Angular can be written using Typescript, Javascripte ES5/6, DART etc so choices are there for developer. This is a advantage with Angular.
LoL... "It's like angular and react have sex" - Max 2017
ChroniZz i think the same
haha... I thought he was gonna say baby but he really went for the word
Next coming. "(Laravel) It's like Rails and PHP have sex."
...That's actually kind of true :D
I'm certain that a majority of large frameworks widely used will phase into lighter weight solutions.
LargeApp.replace('Angular/React/Ember/Jquery', 'VueJs')
LargeApp.replace('PHP/Rails', 'Python')
LargeApp.replace('bootstrap/foundation', 'css grid')
just my opinion.
Having tried all three of them, think vuejs is the simplest and most easy to work with.
Petros Kyriakou I recommend all of you who think like Petros and Max- try Riot.js - it has all the Vue and React advantages but 0 bloat, no JSX, built in observable and the most simplistic and beautiful syntax. I come from AngularJS background and I do not like Angular 4 for the reason it's too big so it takes forever for your first time customers to see your app on mobile. Riot.js is king.
If I need to be honest with you, I would be pretty scared to use it in a big project.
If just about 12 thousand stars on Github don't convince you then I don't think my opinion will bring you any courage either. If you ever find yourself in need of real mobile first framework though: come back and see for yourself how we attracted so many members of communities like Preact, Inferno, Vue and Polymer.
Also answer for yourself would you rather use a compact and simple framework that You use 90% of, or large and complicated framework that you use 10% of? I don't know if you remember "Little Prince", but its author- Antoine de Saint-Exupéry said something awesome that I live my minimalist life by: Perfection is achieved, not when there is nothing more to add, but when there is nothing left to remove.
I do actually work with react native. I do really don't get it if all the things Riot.JS has are so good and the size is so important in this case, I would like to know why to Rect Facebook Team does not use Riot.JS futures and implement it into React?
Whether or not you agree with Max's conclusions, I appreciate how he acknowledges that personal bias/preference come into play when making these kinds of comparisons. So often these kinds of discussions devolve into (sometimes highly technical sounding, and sometimes not!) tribal warfare. Humility and self-awareness are SO essential in these matters; and are traits sorely lacking in our industry. While we're trained to reason well about our code, we often do that much less successfully when thinking critically about our own perspectives. Ultimately though, that can prove just as costly. It just doesn't "break" anything immediately, and so it tends to slip through the cracks much more often. Also, our various communities can be very friendly -- within the ranks. But the tone BETWEEN communities often leaves much to be desired. We can do better.
Amazing comment, I couldn't agree more. As you say, we're all biased but I never understood why would insult each other based on some strange "code religion" if in the end we're all trying to do the same thing: Build great code and therefore apps and do that with enthusiasm!
I commented this link above but I am really curious what you think of a solution to this very big problem like the following tool. It is meant to provide factual, exhaustive, objective, technical comparisons of things. The only problem is that I can't get a single person to contribute a single fact about something they know. There's so much changing information about things that it will never work with only me on the job. The data contained within comes primarily from my own readings about things, but if a few or many others pitched in it could be really helpful. www.techtradeoffs.info
Darren King that was a great comment.
Developers are not alone in their bias towards the latest fad (not that I'm saying these frameworks are a fad). It's the hype cycle I suppose and business management are similar in applying the latest greatest thinking from McKinsey year on year.
As developers we invest time in learning one framework, and as we do we identify with it more, our identity becomes rooted in the community, we need to defend our decision, we have to defend our identity, until the next fad comes along and we all retool.
Companies do not help, they expect developers to have experience in one framework and, from experience, do not hire those that need to retool into another.
The best technology doesn't necessarily become the standard. The technology company that set's the standard controls the industry.
The industry is still young.
This was a useful video Max. Thanks!
I feel a little sheepish to admit it, but after 20 years of knowing a little about a lot and a master of none, I finally have a preference! His comments really hit hit home when he talked about having to use className vs class. I took to it as an upgrade and not a deterrent. I haven't tried Vue yet but I kind of like where I with React and being able to stick a component anywhere is a huge advantage when the scope of your job is modulare. This might be in part that I'm a contractor and get tossed in to new environments all the time.
I find it funny how developers communities would be ready to attack you with full force if you mentioned using different framework or different way of working in general
Angular provides/enforces more structure so to a beginner who isn't a trained software engineer, there's less to think about. You know you access data in services, you modify DOM in directives, you write logic in controllers, etc... In Vue you're free to structure your own data access layer, your mappers, etc... and while that gives you more power, someone who hasn't done a large scale project can easily get started on the wrong path and produce some pretty messy code.
That said, I'm using Vue for my own projects, stay away from React and I use Angular if someone wants me to and they're paying me to do it.
That's a very good point you're bringing up here Sean!
Can you recommend a good repo with good structured Vue to read? It's definitely difficult to find good literature on the subject.
I don't, but if someone is does, I'd love to read it.
Unless I do a simple proof of concept, with VueJS I most often start with the "webpack" template that the CLI provides (github.com/vuejs/vue-cli) and go from there. I have an '/assets/scripts/ ' folder right in '~/src', and here I keep folders for domain objects './domain', api clients (this is the only place that talks to the outside world) './api', mappers converting API objects to domain objects './mappers' (only here, everywhere else I use domain objects), and whatever other groups of code I use ('./i18n' for languages, './utils' for various helpers that are used throughout the app, etc). My components, under '~/components' I group based on functionality (which often maps to pages in my app), and have '/shared' folder in there for generic components).
I find this structured enough to not get too messy, but not overly structured to get lost into it.
Hope that helps a bit.
A very even-handed response! This is the kind of nuance we need when making comparisons as developers.
Well, nothing really prevents you from doing data access and logic in components/controllers instead of the services. It's just bad design. Tends to cause violations of the DRY principle. So Angular does provide a structure but does not necessarily force you to follow it.
I started off learning React, but later switched to learning Vue because of a job, then fell in love with it. Now i hope i dont have to touch React again. As for Angular, i am learning it too. I had to, because by every indication, it is still the leader of the pack.
I love how in React you just specify a single in HTML, and you can write rest of your app without leaving JS.
Vue is beautiful! Very clean and easy to use.
That's it right there.... Vue is beautiful.
It feels good to use it. It feels natural.
React is also clean ;)
@@akiren7730 I disagree on that part. React does feel to provide more control on everything, but it does not feel clean. Feels like lot of wiring on surface. Vue on the other hand has cleaner interface for application development and gives better dev experience enabling better focus on business problem in hand. P.S. I worked with react for 2 years, switched to vue only 4 months back. :)
@@softdevstuff1008 I will give it another look thanks
I had learned Vue and certainly suggest others to go with vue. Because not only it has an easy learning curve, but it also packed with rich features. Let's go for Vue.js
You are absolutely correct. I started learning it 2 days ago & have decided to use it for my app going forward. Bye-bye to Angular :(
Going for vue because it is so similar to knockout
How do yo learn that? Any online tutorial
If only vue native was _there._
"It's like React and Angular had sex" that made me laugh. You could have said "It's like the love child of React and Angular" but no, you went with the dirty way. Excellent.
I Love React so much that I can't imagine not using it. I also love that it's a library and not a framework.
why you love that it's a library and not a framework?
i don't know react
coz framework forces you to do things in certain way , library usage is more optional - use it when u need it
I super super hate react..... It's just complicates matters.
React promotes top-down data flow, and the only way to loop back with data is via callback or Redux, which simulates prop injection (as opposed to specifying the HTML attribute props)
React and Vue brings more freedom in your code than Angular. That's why in large teams it seems to be better to use Angular, because it forces your team to write code in more strict, standard and one style way. I think this is very important advantage of Angular, of which few speak. I'm behind React and Angular :)
Large teams should code review PRs then this freedom can actually become a benefit as then the team decides what architecture works best for them and that particular application rather than them being bound to premature decisions by some framework.
Robert Smith This is so true. And some things that are trivial in JSX or hyperscript takes 10x the time when using templates.
Freedom is great until you have to refactor someone else's code.
@steven That's what code reviews help negate.
Code reviews do not always protect people from their own bad habits or a team from putting out code that is difficult to maintain. None of these frameworks are full proof. You can learn all of them via tutorials and documentation. There are style guides that some choose to follow and others choose to ignore. If you can't get a soiid ui out that's on you as a team not the framework.
first i worked with angularjs, then i learned anguular 2, then i tried react, honestly i prefer react, you can manage your data easily with redux, and create great reusable components, with angular i felt that i'm restricted and should follow what the angular rules.
there is redux for angular
Why do people say Angular is harder to learn than react?
I've used both for months and I can clearly say, Angular is way way way way easier to learn and you get everything out of the box, causing way less headache.
I agree :)
Yeah, I am learning Angular 6, built my first app with nodejs. It was easy.
because in angular you need to learn a lot of new concept like
directive,module,components,services,boostraping,dependency injection and so on
compared to react you only need to learn state,props and components
you also need to learn typscript in angular while in react, jsx is just html in javascipt.
maybe it depends in your current skill set/knowledge like on my case, I came from php cms and frameworks, js/jquery and css styling while I never learn how to code in java and c#
react with redux is a different story though
I also forgot to mention you need to learn es6 syntax in react which is a good thing since it is more cleaner and can save a lot of lines compared to old plain javascript
Angular is a much bigger thing than React. React actually is a library that does one thing, and Angular tries to replace everything that JS has built in.
Anyone who finds adapting to Typescript too challenging should not be working as a programmer
Max is a great teacher. I bought this course after 3 minutes of watching this video.
Awesome! Welcome on board Csaba!
Csaba Kiss I finally mastered angula 2+ after buying his complete angular guide. He really is a great teacher.
Keep up the good work Max!
Been using React for almost a year now and all I can say is that React is more focused on SPAs and only SPAs. While Vue looks like you can drop it into any existing project and add rich functionality to it.
My biggest concern with Vue is that the templates are separate. The reason I like React.js style templates is that you get compile time checking for things like syntax errors. In non-compiled template languages, you can run into simple syntax problems that waste tons of time to track down.
I have not used Angular since 1, so I have no opinion on Angular 2 (my understanding is there were some really major changes there).
I think that Angular is the way to go in terms of future support and adoption of latest web standards like ES6-7 and beyond...and honestly, Im not a fan of React's Spaghetti code style.
Spaghetti is an understatement, i ran away in fear of my life after using react for a few days. Vuejs is clean and sleek
@@phee3D angular 2 is more clean but vuejs is more simply
I personally have found Angular to be my favourite to use so far. The small bit of Vue and React I've played with didn't seem all that fun or appealing to me.
Coming from C# and Java background, I've found Angular more structured and easier for me.
Vue seems the most flexible to me. You could use JSX, HTML templates, JS strings, Vue files, or VNodes. Btw I learned vue from your course
I use Vue Components because it's done in HTML, so you still get normal HTML functionality, as well as CSS (or SASS (what I use)) and JS
VUEX is awesome too, it simple than Redux!
in react you can loop through html code just like we do in php, i don't know if doing that is that simple in angular?
Angular is difficult for newcomers, but it's really provides your all you need just out of the box. From other hand, it takes to much freedom for you about your architecture, which is no good if your team doesn't have developers of middle or senior levels. In my opinion Angular is ideal for enterprise application because of TypeScript and flexibility. Absolutely agree that his popularity lower than React's because of breaking changes during release candidates version.
You just solved my long time dilemma on Angular vs React. Your personal views make this video ,awesome. I have tired of reading articles and watching videos where at the end they just wrap up with saying "everything is same."
I know languages such as C++,C#,JAVA. I prefer the cleaner way like you. I don't like to sacrifice Native HTML and CSS while leveraging new framework.
Thank you. Great Great video👌👌
hahaha...Only a German can say this " If Angular and React has SEX" LOL...
That was the best.
lolololololol
I agree. The best part. Almost choke on my coffee. lol
I was just expecting "had a baby" but then lol'd when I heard that.
came completely out of nowhere. i was not prepared.
Angular is more powerfull than React. Angular is a framework based in Typescript, and React is just a collection of Javascript libraries----
Victor Rodriguez amen brother
I think the strong point of react is that it is component based. You can fix a button, a window or anything and everything you need is there. Just look at this youtube page, some will see it on a computer, some on an iPad, some on a smartphone(most). Each of these screen sizes will display different components and different times, so the model of html and code separation breaks. The component I am working on might be the only thing present when is used because, which tends to be the case in mobile
I agree with your thought about vue,js, I also hope vue become the most popular framework in the world
I think there's no wrong choice, because there is the need for each one of them. You can see that US is more React orientated, Europe to Angular, as Google trends show. As a junior developer i started with React and i like it, but now the company i work for demand us to learn 2+ and...i'm loving it. I really do find Angular easy to learn and to build real projects as a junior. All the libraries provided like rxjs, form validation and Angular Material just makes Angular pretty straight forward. And the directives, ahh i love the directives. But non the less i love both Angular and React, still want to learn Vue, and i will stick to work with Angular at work and React at home!
I really do hope Angular Material to stop existing. Angularjs Developer 3+ years, Angular 5 now for some months, started a project with angular material, hate it completely. A lot of boilerplate, adding a lot of classes for everything. Directives that won't work if their not inside other directives. A complete mess, missing documentation, stackoverflow missing entirely as people can ask only creators on git. Failure.
Vue! Without any doubts.
I dropped learning Angular in the middle of your course - angular is awful.
Planned to take a look at your ionic + angular course, maybe then I will like angular again.
And React.. I don't know, after I found Vue, I understand - it's my love =)
Vue is awesome!
Care to explain why?
Oleg _WebArtisan look at electron too btw. It's very nice with vue
@Oleg_WebArtisan I too was taking his angular course and at first thought I hated it because of the instructor pace and teaching style, I dropped it and am now taking his Vue course and I realize that It wasn’t the instructor, I just just didn’t like Angular lol. Also after doing more research I realized that no major companies use it (besides weather.com) and I think it may be more powerful than what I would ever need it for.
Personally i love angular. I feel angular is better for those who don't come from a web designing back ground. I work mostly with back end programming for website and programming appliaction. Angular just clicks with me since its similair to OOP and typescript is simple to pick up for me.
Oleg _WebArtisan same here +1
Currently learning Angular 10 and yes having a background in C# especially with WPF and MVVM helps a lot in learning this framework.
Max, another thing you didn't really cover is how much flexibility each framework gives you for advanced use cases. For instance, I know it's easy and clean to make a React component that provides an interactive, rearrangeable dashboard layout, and use it with any variety of child components you want. I remember when I was working with Angular 1, there was really no clean, modular way to put an arbitrary variety of children in a dashboard component without the dashboard component knowing more than it should. I don't know if Angular 4 or Vue provide as much flexibility as React for cases like this, so it would be an important question for me.
it's a good comparison - i also pick vue and it's creative vue files idea
I think Vue.js is esay to learn, Angular is the hardest, and Vue.js is most popular in China.
Finally Vue.js will become 1st.
I'm on a project with a lot of junior developers using Angular 4 on the front-end. I'm pleasantly surprised and impressed how easy it is to keep the project on rails for a large team. TypeScript helps out with that too. That might be the biggest point in using Angular above all three.
Richard Yhip vue csn use Typescript
The power of React comes from the fact that it's decoupled from its rendering. That's to say that ReactDom and React are seperate. This gives way to things like ReactNative which is simply just React with a React renderer for different OSs (like apple's OS or windows or android). Also I would argue that the fact that react is so decentralized is a good thing. Because of the vibrant community the range of stuff React can cover is limitless. Also with JSX it doesn't necessarily limit or sacrifice the features of HTML or CSS it simply changes the syntax, and JSX isn't just HTML or CSS it gives more functionality then just HTML and CSS like JS that produces and returns JSX, components, etc etc.
I totally see your point, you list very valid arguments here - and don't get me wrong: I worked with React and I think it's an awesome library. I still work with it, even though I'm not the biggest JSX fan on the world ;)
I personally have fiddled around with React, but never built anything to serious. With that said, I would like to share my experience in working with both Vue and Angular 2. Angular was my first framework that I learned (from your course) and after completing the course, I decided to take on a project that a friend of mine has wanted, a project management application for his construction company. I really enjoyed Angular and Typescript (coming from systems programming). As my project got bigger and bigger and more features were being added, I never found myself lost in the code I was writing due to the component modularity of Angular. I finished the project and the bugs were very little to none, due to typescripts typed nature. After learning Vue (again, from your course), I decided to write an application that has tools to help you sell better on Ebay. I loved Vue, and maybe even better than Angular because setting it up and getting started was extremely easy. As my project and original scope started to change and get bigger, I did find myself getting lost in my code where I would search through my files and finding specific functions to modify and test. BTW, Testing in Vue was a nightmare for me compared to with Angular. With my personal experience, I am concluding that if you want to write a simple application that does a few things and looks cool, use vue or react. When you have a large application, like a project management app, use angular. Side Note: To those that say react is not a framework, my answer is that it CAN be. React is similar to vue only in the context that they are both libraries, but they have tooling where if you sit down at your desk and decide to build a web application you can do it with either of those big 3 and more as a framework.
VueJS is great! Documentation is so easy to understand compared to React and Angular, documentation has a big role to the developer actually. Thanks for this series :)
Definitely. It's interesting to see how many languages/ frameworks don't provide good docs.
Hey Mindaspace, can u create a tutorial that will teach us how to use socket.io on vue-cli?
I really don't like the vue explanations.. I started a internship this week at a company what does very difficult vuejs stuff, can't find explanations on pretty much anything..
Firebase (or Django) + Vue + Bulma --> clean, beautiful, fast and easy
An important thing to point out when considering Angular vs. React and Vue is that you will never have to touch a webpack config file with Angular. The Angular CLI abstracts it all away. Everything is configured for local dev with live-reloading, and for prod builds with tree-shaking and bundle optimizations.
I kinda wanna try Vue but React Hooks keeps me from doing it.
JSX in my opinion is one of the best things about React.
Perfectly valid point! I simply don't like it but I can totally see why others would enjoy using it
Dave Ford now you can use it in Angular 2 or 4 the Rxjs :)
react is massive cool
You can use jsx in vue, too
You could use JSX in Vue as well
Vue guys! Top
Academind, thanks, finally, a good, sane comparison out of all other comparisons, that I have seen. Your video has helped me to choose the right framework to learn - vue. I also prefer the separation of pure html, js and style.
Thank you very much for your great feedback! Great to read that the video helped you, I also like to work with Vue a lot :)
100% agree. Finally an honest review, by a guy that seems knowledgeable on all the three frameworks. Thanks!
Thanks so much! :)
Thanks Max. I chose to learn Vue.js a few months ago and I think I did the right choice. Cheers !
Tried angular and React both! But after this video and valuable comments, will definitely try VUE.
Some of the nice things of react n angular are:
React (redux)
- learning curve
- too much work, state and store management
- Awesome Unidirectional flow
- quite hard to configure
Angular
- Easy to learn
- Complex data flow (resource shared to multiple components)
- much easy to configure and start playing with
- Many people's trust is broken now, as they did breaking changes in release candidate (you are absolutely right) e.g changes brocolli -> webpack just before few months of angular 2 official release.
Another advantage of React is, It can also help you to use your existing JS skills in developing the Android/IOS Apps using React Native
So we can change to react native
The argument that JSX in React has too many differences to HTML is pretty weak. You mentioned className in JSX vs class in HTML. That's just *one* difference!
The only other one I'm aware of is that JSX uses "forHtml" instead of "for", again due to naming collisions with JavaScript. To make whatever HTML you have JSX-compatible, all you have to to is swap those two, and that's it. It's nearly identical otherwise.
And, once you do that, you have the full power of an actual programming language (JavaScript) to bear and use to make your HTML flexible. Instead of yet another DSL that's specific to Angular or to Vue, you loop through elements with JS's `.map` or even with `for`-loops. You can bundle up and share HTML elements across your app as regular JavaScript variables. This is incredibly powerful, and coding in React is the closest of the two to writing regular JavaScript, which is the most useful thing a beginner can learn.
As I said: I totally see that advantage and I can absolutely understand that many people (and companies) are loving React.js for that fact. But as I also said: I'm not one of them. And it's more than just class and className. It's also the trouble you quickly face when it comes to styling your components/ elements.
So many workarounds and new solutions are required - hard to argue that that would be better than using native HTML + CSS + scoped styles for example.
Yeah, as someone that has built a lot of things with React, I agree that the video vastly overstates this problem. It's an issue, but in practice a very minor one, and the video makes it out as the main reason not to use JSX. It would have been more honest to to stick with "I just don't like it".
But neither Angular nor Vue use "native HTML". They introduce entire templating languages that you have to learn in order to solve this problem. It's absolutely not clear cut that this is better - you're just swapping one problem for another one.
I would much rather use JavaScript for styling vs css. CSS is weak for a number of reasons where JavaScript is strong but like you said, it's your preference. I had the same bias against react before actually giving it a try and learning the philosophy behind it.
So what's stopping you from doing that with React? Is something forcing you not to use class attributes and CSS? Also what's JSX have to do with CSS?
"I don't like JSX because it's not really HTML, you can't use class, you have to use className". This compared to what? ng-if?
Do a proper comparison: JSX is very much a templating language. Same with whatever Angular calls it's templating language. Difference is one parses text and looks for `ng-if`, the other one _is_ JavaScript objects/arrays and function calls that turn into virtual DOM directly without the need for a parser like Angular needs. This turns out to be a huge advantage ***for some people*** because you're no longer locked into any templating language (and parser), you can use whatever funky JS library to build that DOM - Immutable, lodash, native forEach/map-reduce.
No one is saying one is definitely better than the other. Literally everyone with brains in their heads say it's a matter of taste, experience and needs.
After giving each a good shot I go for VueJS. For the missing DI in VueJS there is vue-inject (www.npmjs.com/package/vue-inject). It would be great to get VueJS handling DI as well and better than Angular.
Something else that is important is how reactivity is handled. VueJS has it's own built-in version yet officially supports RxJS with vue-rx, which is excellent. RxJS is indispensable and gaining further insight into how these two reactive systems compliment each other in VueJS is key.
Yep, that's true - thanks for sharing that!
You aren't afraid that in the long term those little libraries like vue-inject will cease to exist for any reason?
Vue-inject is about 100 lines of code and not rocket science. How hard would it be for you to keep it up to date really if the original author goes AWOL or moves on?
I reason I like React (With Styled Components) is because I can put everything that is relevant to a component in the same file. Less spaghetti code. Everything is self-contained.
This was a smoother introduction to frameworks than Bob Ross gives to clouds, thanks man
Haha, thanks Kerry!
HAHAHA Y SO SERIOUS?
This is so typical. A lot of people are upset at what the guy has said because of their bias or preference. I like a lot of the responses here which just look to keep the plain field even...
1) React is a library not a framework. This is why it doesn't come with a router or form validation etc
2) All 3 of these libraries/ frameworks are awesome. Pick the one you PREFER
3) The facts are there with regards to jobs/ community and the team size (Facebook, Google, 1 guy)
4) React and Vue can be included in all kind of projects whereas Angular has to sort of be it's own project/ thing
I have worked with both React and Angular and I can appreciate both. I have a lot of experience in CSS and so I can see why Angular's way of doing styling and templating may be preferred. For a while I preferred Angular because of this. I love that. I like working in the HTML
I do think React is actually simpler to work with. It is just JavaScript and I like the way the parent-child relationships as well as how you include components in other components
Everyone just take a chill pill and understand this guy like separation of concerns and so Angular and Vue fit him better. There was a little bias against React in this video but you can tell it's a preference thing
Thanks for summing that up ;)
And just to highlight that again: Yes, I prefer Vue and Angular, I'll be honest and of course you can see that in the video. I did call React a framework because people ARE comparing it to Angular and Vue and ARE using router and Redux. If anyone isn't doing that, then the whole comparison of course doesn't make that much sense (at least not with Angular).
And I have nothing against React - just not my #1 pick
One thing that I really did not like about React is the documentation. I thought it was poor, at best. I am going to rewrite my react app with vue and see how I like it.
Thanks for this video.
That's true, the documentation is indeed horrible.
Then submit a PR or file an issue so they can improve it? I actually don't see a lot wrong with the React documentation.
horrible? seriously?
that's the right thing to do, and yeah, I don't see myself something wrong with it.
Yep. I've seen worse. It could be better though. Example: the Life Cycle Methods page give an example of some of them being used but not all and doesn't really explain why you'd use one over the other like ComponentDidMount vs ComponentWillMount. ComponentWillMount is not even on the page.
I find it hilarious how at screen with framework logos, for react and angular we see huge brand names, and next to vue - just a pic of some guy with no name ) It's ok though - hard to deny great technology, it's amazing how fast and far Vue has grown in such short time.
That is true indeed - amazing success story thus far
I came from a Python backend / data science background. Tried to watch vids on React and quickly realized I was in for a steep learning curve. Stumbled across VueJs. Watched a single video and it immediately clicked. I can do this! Now am halfway through my second enterprise level SPA and life is great. Using Quasar, a fantastic framework built on Vue
Love this channel 😭 can you make a 2019 version of the comparison between these frameworks please 😁
I might create one, but an updated version already exists, just in case you haven't seen it: academind.com/learn/angular/angular-vs-react-vs-vue-my-thoughts/
none.
Ember.
I've used React, Angular, and Ember, and I'd choose Ember for apps of any size.
I've been using react and angular (Junior-intermediate level). my personal thoughts;
React is definitely better and easier to fly off for beginners who's learning the frontend js engine for the first time, but it get's complicated as you go deeper into the state, data management and most importantly, writing GOOD React code (as Max mentioned). Angular, on the other hand, takes some time to get used to using Angular's own methods and services but it gets much easier once you get used to those methods.
I’m having the same thoughts in my mind but I don’t if they’re correct
Angular if you're really serious about it. Vue.js if you're still serious, but not too serious. React if you're making a cruel joke, like Facebook.
React can have templates too: there's an npm package called `react-templates` that does them nicely (much better than Vue imho).
My Thoughts:
- Ideally look for one where their is Job Growth/skills is in high demand
- Identify why/what do you want to learn the language for(Work,Personal,Just an interest/hobby)
- Which framework is going to be around for a long time/updated on a regular basis
Just some of the things I would consider when learning a new language..
You should check out "Aurelia" - the framework that "Angular 2" architect Rob Eisenberg designed after he left Google's Angular 2 team over design difference disputes. And for good reason.
The last hing we need is a yet another new framework especially one that is not backed up by a huge company.
no?
The language of the month and the framework of the week. I'm tired of keeping up ;)
I like being happy
Vue, of course!
I have used Vue with Flask (Python) at work and that combination is so easy and manageable to use. Some otherr department use React and Golang. I will force them to use Vue :)
A wise man once said, "React (unlike Angular) is not a framework, it's a library!" ... And I responded, "Angular is not a framework, it's a Platform(TM)"
I believe it's quite unfair to compare a framework like Angular to an MVP library like React and say "react doesn't brings all the feature Angular brings". This is by nature. React is the children of the modular ecosystem where you bring pieces you want together. And if you're lazy there's quite a lot of generator like Create-React-App or Yeoman. You can get started within minutes, and if you prefex Redux over MobX well go for it. On the other side Angular is in itself a lot of choice made for the users. But you cannot objectively compare the too in this manner. Would you compare a car and a wheel ?
I love angular 2,4,5
Yeah its by nature. Still its not an all in one package.
why?
a car (angular) and a carriage with 4 wheel (react) is a better anology :P
vuejs for quick. angular for enterprise. react for awesomes
I'm moving to react because of angulars continuity problems.. I was always a fan of how angular worked, but the more I learn about react, I'm starting to like it better.
Thank you for this video. Angular has a steep learning curve. If you are a beginner-level programmer, attempting Angular may discourage you so much, you could get turned off to becoming a developer. Make sure you know AJAX, json, ES6, http requests, traversing the dom, call back functions and regular JavaScript well before attempting Angular is my advice.
If you plan on freelancing, then based on what I heard, I'd go with Vue. If you want a job, check job sites (indeed and dice) to see what is more in demand in your area.
Angular is both new and established, so being among the first kids on the block to learn it can give you a distinct advantage (I'm hoping). Plus you'll learn concepts that will help learn other languages (oop, classes), frameworks (MVC, modules, components), and good programming habits (TypeScript, not mixing HTML with JavaScript).
That definitely can be a factor. Vue has way less jobs BUT, as you mention, there also are way less developers knowing it.
Kinda of prefer Angular because of the modular nature. Not sure about it's stability.
I think for big projects Angular is the best and Vue for small projects , with Angular projects are very easy to manage and maintain
VueJS is not only for small project. Try Vue + Vuex.
And I think project scale depends on code architecture.
Vue.js is attractive to LEARNERS and not to EMPLOYERS.
Well, people always have to learn something before it gets used I guess
bist du Deutscher?
Arbeitest du als programmierer?
Ja, bin ich und arbeite als Freelancer.
Sehr gut,
Ihr Kanal ist ziemlich groß für die IT-Nische.
Sie und "Traversy" gehören zu den Besten, wenn es um Unterricht geht.
Vielen, vielen Dank - freut mich wirklich sehr, dass der Content gut ankommt :)
Great opinions there, thanks!
I would argue that being backed by an active community instead of by a big company like Google or Facebook is actually a feature, not bug of Vue.js.
That's because this way we can be more sure that there won't be any conflict of interests between the community of developers that use the framework and the company that backs it (the recent controversy of React's license is the most screamingly obvious example of that)
Let me put it in perspective with an example: most developers that I know that can code in Java (Oracle), Python (Community) and C# (MS) like Python best.
Hypothesis: The community-driven evolution of Python is what led it to this point.
I see the same python-like vibe in the Vue community.
Angular 2+ it is like Java for front end developers ;)
I like React, Vue and Angular, all 3 highly performant, but for enterprise level I would be select Angular 2+ due scalability, modularity and the best integration with TypeScript.
Re: you use "normal" HTML for Vue and Angular
this is not normal HTML :p
in react you can loop through html code just like we do in php, i don't know if doing that is that simple in angular
Wooow can you (or anyone) explain what you just did here?
That's pretty much the worst thing about JSX. It looks, feels and behaves like bunch of tags in my HTML. Yuck.
Yeah, but the example was vue though. Idk, I personally love it, might look unusual, but after small learning curve, you'll totally get why Max says it's close to "normal" HTML. Vue bindings are very intuitive, and drop onto html seamlessly.
Angular users: - we write lean code. React users: - we have JSX. Vue users: - we have the best docs 👁👄👁
I haven't used Vue.js yet, but with React, the best thing about it (other than the virtual DOM) is that you have redux and native as well. What that means is when you learn to write your styles in JavaScript rather than css, when you move to creating apps on iOS, Android, and Windows platforms, you will have an easier transition. I don't know if Angular or Vue have an answer for that...
One thing Max left out is that Vue really has two levels.
The first, simplest, and gets most of the great initial documentation, is one that requires *no* workflow! You just import vue and build a page. No webpack, browserify, and so on.
The second uses a vue-cli which transforms a .vue file into a bundle. This makes Vue.components easier to build & manage by having three sections: Template: html, Script: your code managing the template/component, and finally Style: the css for your component. The downside is that the vue-cli exposes the user to webpack and babel configuration.
I tend to minimize workflow, so am currently using vanilla vue.js and various css tools like Bulma and others.
I'm taking Max's course, and it's quite thorough. I'm exactly at the place where he switches to .vue files and I'm taking a break to build a simple page with just vue.js, then trying the same thing with the vue-cli workflow and .vue files.
I love how simple React is.
I personally love VueJS for the very same reason you do. VueJS will be the future most prefered javascript framework.
I'm all for well-reasoned opinions, but statements like "VueJS will be the future most preferred javascript framework" betray a lack of understanding re: the nuances of the cost and benefit tradeoffs, and how that varies person to person and team to team. Developers often suffer from extreme tunnel-vision in these kinds of matters.
Me too. So I made this www.techtradeoffs.info It just needs a little crowdsource love. Your contributions of product knowledge are welcome.
The fact that vue is not backed up by a huge company is a strong factor why that may not happen.
if u work in china, vue is in same demand as angular or react, sometimes even more, i like vue a lot:)
I think u haven't mentioned the most powerful feature of React "updates". u can update only one component without affecting other. It is crucial for high performance apps.
10:22 HHAHAHAHA
i think what you were looking for this phrase
"if angular and react had a lovechild"
xDDD
In my case, I'm a fan of React. The community is really big and there is plenty of companies that are looking for React.js developers. I'm using Laravel in our company and mixing it with static cms. I do even use Backbone (application is too big to switch to react) and we just render react with backbone router, also I'm on the opposite way, I love the way react.js syntax works. I also think that learning ES6 is a must. I do agree about things like a router, it's pretty annoying to use some NPM react router without knowing how long it will be up to date... For me react is showing how powerful javascript can be. It's true, you need to know how to design your react application. Beginners can get most problems with setting up the project and structuring it. Vue.js is nice(Have not tried it, I will soon) but still it's created by one guy in the first case so he decides everything.
That's a really great addition, thanks for that Artur!
Where is the key point that only React and Vue use virtual dom which means that they are A LOT faster? I tried all of them and I like Vue the most because of its simplicity, beauty, separation of concerns and high performance. Angular is my second favorite as it so good for enterprise applications and is very logical which somewhat mitigates the drawback of its steep learning curve. React, well, it is definitely good but I don't really understand why some people say it is number 1.
I learned angular and I'm learning VueJS and I find that Angular works great for medium-large to extra-large projects. But VueJS just works amazing for small client websites or medium sized projects, I also integrated VueJS to some of my full stack applications and it is just a drop in component that doesn't force you to build an spa. It also has angular-or-better SEO components (Putting it against Angular Universal).
I dont know I just love React
Which is perfectly fine, it's an awesome library!
Maybe Angular Team did some breaking changes updates. But I see this as an advantage. I could refactor my code, because I prefer my framework to work perfect. If any breaking changes needed to fix something up, so why not? I'm tired of patching and making walkarounds to fix some easy issue only because the changes will be impacting or the company simply doesn't have enough money to do it right.
Aha, especially when you have a build system like envoyer that will deploy your app and after 2 months you will see your app no longer working on IE because someone at angular screwed up and somehow after 4.x.x version(i do not know it anymore) polyfills aren't included no more, so you will need to add them manually. Nice advantage.
Even in theory you don't sound good. When i run "npm install" i would pretty much insist on app to work the same every time. Would someone like to refactor his whole application that was running perfectly just because someone at google decided to rename some packages, i don't think so.
It's a JavaScript library, you ship the library to your users, so the only reason backward compatibility is an issue is if you upgrade the library. Frankly speaking, for most project I see no reason to upgrade a JavaScript library unless you know the newer version fixes an issue you've been affected by or you're spotted a new feature that you want to use.
Robert Ale You should use "npm ci" instead to install the exact version specified in the lock file instead of getting unexpected upgrades.
Yeah, i'm using npm install --no-save for a while. But my answer was mainly for the guy above, i do not love so much updates. I updated from 4 to 5 with ease, but there still are a lot of risks.
Thx for your time
I showed your comment to my HOT and guess what :)) We're gonna start at least testing npm ci, so thx. Dind't know about it.
I like AngularJS the most to be honest. It is the most simple framework to work with. You have your JS and HTML along with services, etc. Wanna work with components only?... Awesome, you have directives and components (since 1.5). Wanna work with a normal page an few components?... Great, put an HTML and JS as a controller and you're good to go. Want some single page applications to be done?... No problem, put a routing framework like UI Router and you'll be fine. The sky is the limit.
Pair that with grunt, SASS or LESS and you'll get an awesome and easy to develop app. I'm also learning Angular 2, but it's to messy with the imports, but not a big problem.
I understand your complaints about React, particularly referring to things like the renaming of attributes: className vs. class, for example. Our latest project at my current job featured React as a foundational element, and some of the conventions threw me off at first. JSX, in particular, sounded like a silly tack-on, but three things changed my mind.
First, using JSX and React to create components instead of HTML templates, I cut my file count in half and made it easier to expose UI issues. Integrating code and layout works very well. The trick is to avoid excessive nesting and inline styling, so class names and other attributes are of paramount importance. We paired React/JSX and Stylus, implemented on-change compiling of a unified CSS tree, and cut our development-time page reloads by probably half (I don't keep stats on this, so I don't know for certain. But half is a good guess.)
Second, decent browsers support source maps, so with the proper development scaffold, I can trace, debug, and inspect JSX files in the browser dev tools directly rather than looking at the compiled JS product. There are also React-specific dev tools extensions to enhance the picture.
Third, and this is a BIG one for me: the style of React programming (of React itself, actually) is explicit. It doesn't do the "magic" that frameworks generally do, and for a bottom-up thinker, that's a big deal. I've had to deal with black-box frameworks from time to time, and I always find the experience frustrating.
I suppose one has to use whatever tools are available in some cases. I've been fortunate lately, in that everyone is asking me to make those decisions. When it comes to updating job skills, I advocate theory and basis skills over specific frameworks. Then you can say to an interviewer "no, I don't know Circular.js 3.14, but I'm very up to date on ES7, CSS4, and the major quirks that Microsoft has introduced with reference to W3C standards in the latest release of Edge." Portable skills atone for framework and library ignorance, right? At least I like to think it.
In 2019 my personal top React, Vue, Svelte, Angular.
Hey... can I ask what is the best way to start if new to react.
@@blessynoby9640 Try the Udemy course Academind has made. That's the one I'm currently learning from.
Still new to the whole web scene...soo much to learn, soo much happening...ahh! Time to look at a rxjs video.
Hi Academind, can you please create a video on following topics
1. How Angular change detection works? (Zonejs)
2. WebRTC
3. internationalization in Angular (i18n)
in short, the major thing is divided in two groups -
1. Angular - guys who want it more organized, freedom is secondary for them, they sacrifice freedom in return for more control & organization over the code
2. React - others who want more freedom with their code/coding style in a detailed level, which can be messy at times due to this flexibility i.e. freedom in the coding style
Know thyself & choose your framework according to your taste! that's all.
I assume by freedom you meant chaos? :D
wow I didn't know there is a Javascript framework other than Vue.js
lol, where have you been living all those years?
haha man....so funny
had you been even living all that time? :P
lol obviously he's saying Vue.js is his emphasis.
AngularJS and React are far older than Vue.js
actually, every self-respectable js-developer should write his own js-framework))
"It's like React and Angular had sex." Lmao
Hao Nguyen birth of vue js
Hao Nguyen 😂😂😂
Yep, Angular for me! I fell in love with this framework after just a couple of videos. Clean, clear, and everything else. I highly recommend Max also, 5 star teacher.
Thank you so much Razvan, just awesome to hear that!
I get your point trying to compare react to angular, but calling react a framework is a mistake only people make who didn't get past the tutorial. In conclusion: Angular: framework , React: view library.
I hear that a lot and I don't agree. Yes, React is a library. In theory. In practice, the decision between Angular/ React/ Vue is real because you can use React like a framework (or: Like the other frameworks) by adding the right packages like the router. I won't ignore that just because it's a library in theory ;)
Academind this is very true and I agree with you. React is a library if you use React only. but once you add router, redux, and the rest of the packages, it's pretty much a full blown Framework.
Vue? Angular?
Jquery the is the only js framework I'm still using ....