Summary

In this chapter, we discovered many new things.

First of all, React, one more hugely popular solution for creating modern web applications. We saw that even though it looked kind of intimidating at first, we could really quickly get started using CRA and no configuration at all, and with a minimal amount of code.

We learned about JSX and how enabling it can leverage the power of JavaScript while defining components. Of course, the syntax feels a bit alien at first for anyone used to separating templates and logic, but on the other hand, we showed that JSX helps to really take advantage of our JavaScript/TypeScript skills instead of having to learn a lot of new syntax!

We saw how to write React components using classes but quickly switched to the more idiomatic functional style that the React community loves. While doing so, we saw that it enabled us to write very concise components, while retaining all the power of React, thanks to React hooks such asĀ useState and useEffect.

We also saw how to pass properties to components, how to manage internal state, both with class and Functional Components, how to hook into the lifecycle of our components, and a ton more!

On the backend side, we saw that we could leverage our knowledge of Angular to quickly be proficient with NestJS, which reuses many concepts of Angular, mimics its APIs, and even provides a similar CLI tool.

Then, we discovered GraphQL, a novel and popular way to create powerful web APIs. We saw that, combined with Apollo GraphQL, we could easily create awesome web APIs.

Aside from all of that, we, of course, continued to learn about TypeScript features as part of this chapter. We discovered what object and array destructuring are, how well TypeScript supports React and JSX, and more!

In the next chapter, we will revisit the LyricsFinder application using all of the things that we have learned about in this chapter! It's going to be really cool!