Vue.js

Vue.js (https://vuejs.org), also known as Vue, is a modern web framework that can be used to easily create SPAs:

Vue is open source and was created in 2014 by Evan You (https://evanyou.me), who was working on AngularJS projects at Google at the time. While creating Vue.js, Evan's goal was to take the good parts of AngularJS and create a simpler and lighter alternative.

One of the key advantages of Vue.js is that it is really lightweight (~30 KB when gzipped!), highly performant, approachable, and easy to learn. As we'll see shortly, compared to Angular, there are fewer concepts to learn about before you can get started with Vue.

Vue.js is also easy to integrate into existing applications, including legacy ones that are rendered on the server side. This fact alone is a good reason to choose Vue instead of Angular or React, depending on your project.

Just like Angular, Vue.js embraces the standards of the web (any valid HTML code is also a valid Vue template) and reactive programming and has a component-based architecture. It also features a set of official services and APIs around the core of the framework; for example, there is an official routing mechanism, and an official state management library.

As an added benefit, learning Vue.js is actually fun. You can start with the core, which is focused on the view layer, and then learn some more if you want to and start using some of the officially supported extensions/libraries.

Although Vue.js is small-ish/minimalist in comparison to Angular, it doesn't try to give you everything and the kitchen sink, like Angular does with its numerous built-in modules. As a result, community-driven packages that support specific requirements need to be added to Vue projects. This means that creating a large/complex application that requires many features may be more complex, given that you would need to choose different solutions yourself and figure out how to integrate everything properly.

Like most modern web frameworks, Vue has a very efficient rendering pipeline, but it wouldn't be useful to try and compare the performance of each framework since performance is a moving target: it evolves all the time. One point to mention, though, is that Vue (like React) uses a virtual DOM, a technique that was initially made popular by React.

The virtual DOM, as its name implies, is an abstraction of the actual DOM that the browser is aware of. Whenever a component needs to be rerendered, a new virtual DOM is generated in memory, which is then compared to the previous one. The differences are identified and a set of transformations are derived and applied to the actual DOM of the page, making the changes effective in your application.

Don't waste too much time digging into virtual DOM, incremental DOM, or similar techniques at this point unless you plan on contributing to the frameworks themselves. Each major framework tends to evolve very rapidly, and what is true today will probably not be true forever. For example, at the time of writing, Angular is preparing to move toward using an incremental DOM technique with Ivy, its new rendering engine: https://blog.nrwl.io/understanding-angular-ivy-incremental-dom-and-virtual-dom-243be844bf36.

Another interesting thing to mention is that, in comparison to Angular, Vue is not backed by a large company. Instead, it is led by an independent core team that accepts donations and is surrounded by a large developer community.