From "Building Web Applications with .NET Core 2.1 and JavaScript - Leveraging Modern JavaScript Frameworks" by Philip Japikse, Kevin Grossnicklaus, Ben Dewey