I was the first to study Angular; as a result, it turned out to be a convenient development tool. I especially liked his directives, which made it easy to operate on DOM elements and their styles depending on the data that we have stored in the component. The pipes were also very convenient, with their help you can correct the data necessary for the template before displaying them. In general, working with this framework did not cause problems.
React was next on the list. He remembered me for his work with the virtual DOM. Building a component in it is a function, and its final form depends on the underlying logic. You know exactly when and how each DOM element will be rendered. However, transferring data from component to component was a bit perplexing to me. It is not difficult to transfer data from the parent component to the child component, it is already more difficult in the opposite direction, and transferring data to an indirect relative makes you think twice. These problems are solved through a tool like Redux, which makes it easier to transfer data.
The last framework was Vue. It quite interestingly combines the chips from the two previous frameworks. It, like React, works with a virtual DOM, but it has its own directives, which are very similar to those in Angular. At first, it seemed a little strange to me to write the logic of the template and the styles in one file. Subsequently, it turned out to be very convenient, because you do not need to switch between files to look at the already written code - after all, everything is nearby.
After studying all three tools, it’s quite difficult to decide on the technology for developing a project from scratch, since each of them has its pros and cons. Perhaps I will choose Vue, because it has those chips that I liked in the other two tools. In addition, we get the light weight of the framework itself and the compactness of the file tree, because one component is one file. But by the way, all these technologies are quite interesting, and approximately equally simplify the development of Web applications.