Use Angular with ASP.NET Core (2023)

  • Article

The ASP.NET Core with Angular project template provides a convenient starting point for ASP.NET Core applications that use Angular and the Angular CLI to implement a rich client-side user interface (UI).

A project template is equivalent to creating an ASP.NET Core project that acts as the web API and an Angular CLI project that acts as the user interface. This combination of projects offers the convenience of hosting both projects in a single ASP.NET Core project that can be built and published as a single unit.

The project template is not intended for server-side rendering (SSR).

Create a new application

Create a new project from the command line using the commanddotnet new cornerin an empty directory. For example, the following commands build the application in amy new appdirectory and navigate to this directory:

dotnet novi kutni -o my-new-application my-new-application

Run the application from Visual Studio or the .NET Core CLI:

  • Visual studio
  • .NET Core CLI

Open the created.csprojfile and run the application normally from there.

The build process restores npm dependencies on first run, which may take a few minutes. Subsequent builds are much faster.

The project template creates an ASP.NET Core application and an Angular application. An ASP.NET Core application is intended to be used for data access, authorization, and other server-side issues. Angular application, based inClientAppsubdirectory, intended to be used for all user interface issues.

Add pages, images, styles and modules

TheClientAppdirectory contains the standard Angular CLI application. See officialCorner documentationFor more information.

There are minor differences between an Angular application built from this template and one built from the Angular CLI itself (viafrom new) However, the app's features remain unchanged. The application generated by the template contains aBootstrap-based layout and basic routing example.

Run the commands

In the command line, go toClientAppsubdirectories:

cd ClientApp

Ako imatefromtool installed globally, you can run any of its commands. For example, you can runfrom fluff,testa, or any otherAngular CLI naredbe. You don't have to run awayfrom servingHowever, since your ASP.NET Core application deals with serving both server-side and client-side parts of your application. It is used internallyfrom servingunder development.

If you don't have itfromtool installed, runnpm run itInstead of that. For example, you can runnpm run lindthenpm run test.

Install npm packages

To install third-party npm packages, use the command line atClientAppsubdirectory. For example:

cd ClientAppnpm install

Publishing and development

During development, the application runs in a mode optimized for developer convenience. For example, JavaScript packages include source maps (so you can see your source TypeScript code when debugging). The application tracks changes to TypeScript, HTML, and CSS files on disk and automatically recompiles and reloads them when it sees those files change.

In production, preview a performance-optimized version of your app. This is set to happen automatically. When you publish, the build configuration emits a minified, precompiled (AoT) version of your code on the client side. Unlike the development version, the production version does not require Node.js to be installed on the server (unless you have enabled server-side rendering (SSR)).

You can use standardASP.NET Core hosting and development methods.

Start "serving" independently

The project is configured to run its own instance of the Angular CLI server in the background when an ASP.NET Core application is started in development mode. This is convenient because you don't have to manually start a separate server.

This default has a downside. Whenever you modify the C# code and the ASP.NET Core application needs to be restarted, the Angular CLI server is restarted. It takes about 10 seconds to start the backup. If you frequently edit C# code and don't want to wait for the Angular CLI to restart, run the Angular CLI server externally, independent of the ASP.NET Core process.

To run the Angular CLI server externally, go toClientAppsubdirectory on the command line and start the Angular CLI development server:

cd ClientAppnpm start

When you start your ASP.NET Core application, it will not start the Angular CLI server. A manually started instance is used instead. This allows it to start and restart faster. No more waiting for Angular CLI to rebuild your client application every time.

When the proxy is started, the URL and destination port are derived from environment variables defined by .NET,ASPNETCORE_URLSiASPNETCORE_HTTPS_PORT. To set the HTTPS URLs or port, use one of the environment variables or change the value toproxy.conf.json.

Configure proxy middleware for SignalR

For more information seehttp-proxy-middleware.

Additional funds

  • Introduction to Authentication for Single-Sided Applications in ASP.NET Core

The updated Angular project template provides a convenient starting point for ASP.NET Core applications that use Angular and the Angular CLI to implement a rich client-side user interface (UI).

A template is equivalent to creating an ASP.NET Core project that acts as the API backend and an Angular CLI project that acts as the UI. The template offers the convenience of accommodating both types of projects in one application project. Consequently, an application project can be built and published as a single module.

Create a new application

Create a new project from the command line using the commanddotnet new cornerin an empty directory. For example, the following commands build the application in amy new appdirectory and navigate to this directory:

dotnet novi kutni -o my-new-application my-new-application

Run the application from Visual Studio or the .NET Core CLI:

  • Visual studio
  • .NET Core CLI

Open the created.csprojfile and run the application normally from there.

The build process restores npm dependencies on first run, which may take a few minutes. Subsequent builds are much faster.

The project template creates an ASP.NET Core application and an Angular application. An ASP.NET Core application is intended to be used for data access, authorization, and other server-side issues. Angular application, based inClientAppsubdirectory, intended to be used for all user interface issues.

Add pages, images, styles and modules

TheClientAppdirectory contains the standard Angular CLI application. See officialCorner documentationFor more information.

There are minor differences between an Angular application built from this template and one built from the Angular CLI itself (viafrom new) However, the app's features remain unchanged. The application generated by the template contains aBootstrap-based layout and basic routing example.

Run the commands

In the command line, go toClientAppsubdirectories:

cd ClientApp

Ako imatefromtool installed globally, you can run any of its commands. For example, you can runfrom fluff,testa, or any otherAngular CLI naredbe. You don't have to run awayfrom servingHowever, since your ASP.NET Core application deals with serving both server-side and client-side parts of your application. It is used internallyfrom servingunder development.

If you don't have itfromtool installed, runnpm run itInstead of that. For example, you can runnpm run lindthenpm run test.

Install npm packages

To install third-party npm packages, use the command line atClientAppsubdirectory. For example:

cd ClientAppnpm install --save

Publishing and development

During development, the application runs in a mode optimized for developer convenience. For example, JavaScript packages include source maps (so you can see your source TypeScript code when debugging). The application tracks changes to TypeScript, HTML, and CSS files on disk and automatically recompiles and reloads them when it sees those files change.

In production, preview a performance-optimized version of your app. This is set to happen automatically. When you publish, the build configuration emits a minified, precompiled (AoT) version of your code on the client side. Unlike the development version, the production version does not require Node.js to be installed on the server (unless you have enabled server-side rendering (SSR)).

You can use standardASP.NET Core hosting and development methods.

Start "serving" independently

The project is configured to run its own instance of the Angular CLI server in the background when an ASP.NET Core application is started in development mode. This is convenient because you don't have to manually start a separate server.

This default has a downside. Whenever you modify the C# code and the ASP.NET Core application needs to be restarted, the Angular CLI server is restarted. It takes about 10 seconds to start the backup. If you frequently edit C# code and don't want to wait for the Angular CLI to restart, run the Angular CLI server externally, independent of the ASP.NET Core process. To make:

  1. In the command line, go toClientAppsubdirectory and start the Angular CLI development server:

    cd ClientAppnpm start

    Great

    Usenpm startto run the Angular CLI development server, nofrom serving, so that the configuration inpackage.jsonshe is respected. To pass additional parameters to the Angular CLI server, add them to the relevantscenariosline in yourspackage.jsonfile.

  2. Modify your ASP.NET Core application to use an external Angular CLI instance instead of running your own. YoursGet startedclass, replace itspa.UseAngularCliServercall with the following:

    spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");

When you start your ASP.NET Core application, it will not start the Angular CLI server. A manually started instance is used instead. This allows it to start and restart faster. No more waiting for Angular CLI to rebuild your client application every time.

When the proxy is started, the URL and destination port are derived from environment variables defined by .NET,ASPNETCORE_URLSiASPNETCORE_HTTPS_PORT. To set the HTTPS URLs or port, use one of the environment variables or change the value toproxy.conf.json.

Data transfer from .NET code to TypeScript code

During SSR, you might want to pass data on request from your ASP.NET Core application to your Angular application. For example, you can pass cookie information or something read from a database. To do this, edit yoursGet startedclass. In the callback forUseSpaPrendering, set the value foroptions.SupplyDatasuch as the following:

options.SupplyData = (context, data) =>{ // Creates a new value called isHttpsRequest that is passed to TypeScript code data["isHttpsRequest"] = context.Request.IsHttps;};

TheSupplyDataThe callback allows you to pass arbitrary JSON-serializable data (for example, strings, binary values, or numbers) on request. Yourmain.server.tscode takes this asparam data. For example, the preceding code sample passes a binary value asparams.data.isHttpsRequestfrom the insidecreateServerRenderercall back. You can pass it to other parts of your application in any way supported by Angular. For example, see howmain.server.tspasses himBASE_URLthe value of any element whose producer is declared to receive it.

Lack of SSR

Not all applications benefit from SSR. The main benefit is perceived performance. Visitors who reach your app over a slow network connection or on slow mobile devices see the initial user interface quickly, even if it takes some time to retrieve or parse the JavaScript packets. However, many SPAs are primarily used in high-speed internal corporate networks on high-speed computers where the application appears almost instantaneously.

At the same time, there are significant disadvantages of SSR activation. It adds complexity to your development process. Your code must run in two different environments: client-side and server-side (in a Node.js environment called ASP.NET Core). Here are some things to keep in mind:

  • SSR requires Node.js to be installed on your production servers. This is automatically true for some deployment scenarios, such as Azure App Services, but not for others, such as Azure Service Fabric.
  • Activate itBuildServerSideRendererthe construction of the flag challenges younode_modulespublication catalog. This folder contains 20,000+ files, which increases development time.
  • To run your code in a Node.js environment, it cannot rely on the existence of browser-specific JavaScript APIs such aswindowthelocal storage. If your code (or any third-party library you reference) tries to use these APIs, you will get an error during SSR. For example, don't use jQuery because it calls browser-specific APIs in many places. To avoid errors, you should either avoid SSR or avoid browser-specific APIs or libraries. You can wrap all calls to such APIs in checks to ensure they are not called during SSR. For example, use a control like this in JavaScript or TypeScript code:
if (typeof window !== 'undefined') { // browser-specific API call here }

Configure proxy middleware for SignalR

For more information seehttp-proxy-middleware.

Additional funds

  • Introduction to Authentication for Single-Sided Applications in ASP.NET Core

FAQs

Can Angular be used with .NET Core? ›

The updated Angular project template provides a convenient starting point for ASP.NET Core apps using Angular and the Angular CLI to implement a rich, client-side user interface (UI). The template is equivalent to creating an ASP.NET Core project to act as an API backend and an Angular CLI project to act as a UI.

Why should I choose Angular over asp net? ›

Single-page applications, and Angular in particular, are constantly being updated with more and more presentation libraries and extensions compared to ASP.NET MVC. Angular provides robust extensibility and customization and has deep community support that is continually growing.

How to deploy Angular with ASP.NET Core? ›

Publish an angular application by running the command ng build, then create a site for angular in IIS and provide its respective path as follows. NOTE: If ng build command is not recognized in an angular application, use npm install -g @angular/cli@latest in an angular application in the vs code terminal.

Which is better Angular or .NET Core? ›

We ended up going with an Angular front-end and an ASP.NET Core API backend, using Azure SQL. We tested Core Razor and, although better than legacy Razor, Angular was much faster for us in the end. As far as user experience goes, Angular (or React) is far superior in terms of performance.

What backend works best with Angular? ›

NestJS is a framework that relies heavily on good architecture and drew many of its concepts from Angular. Therefore, this is probably the fastest way for someone familiar with Angular to start writing their own backend.

When should you not use .NET Core? ›

When Not to Use . NET Core
  1. Windows Forms and WPF applications are not supported – You still have to use Mono to make a . ...
  2. ASP.NET WebForms don't exist – Though Microsoft provides strategies for migrating ASP.NET Web Forms apps.
  3. You need to create a WCF service – . ...
  4. Missing 3rd-party library support – . ...
  5. Missing .

Should I use Angular or React with asp net? ›

If you're looking for a comprehensive framework that includes everything you need to build a client-side app, then Angular is a good choice. However, if you're looking for a framework that's focused on creating fast and interactive user interfaces, then react js web development is a better choice.

Why do big companies prefer Angular? ›

Angular enables the use of HTML as a base template language that enables angular front end developers to extend HTML's syntax accurately and concisely express app elements with few lines of code. Features of Angular Development: Angular is an open-source framework.

Why do people still use Angular? ›

Angular is a popular and widely-used JavaScript framework for building web applications. It is maintained by Google and has a large and active community of developers. One of the main benefits of using Angular is that it provides a structure for building web applications.

Which frontend framework to use with ASP.NET Core? ›

The most popular front-end framework for ASP.NET Core is Bootstrap. It provides a wide range of components and features that can help you create beautiful, well-structured responsive web applications. Additionally, it is highly extensible, making it easy to customize and add features to suit your specific needs.

How to integrate Angular with ASP.NET Core MVC? ›

Integrate Angular with ASP.NET MVC
  1. Step 1: Add New MVC Project. ...
  2. Step 2: Add a package file for angular. ...
  3. Step 3: Add system configuration java script file. ...
  4. Step 4: Add typescript configuration file.
  5. Step 5: Route the URL for accepting angular. ...
  6. Step 6: Add Angular Reference. ...
  7. Step 7: Setup Angular structure.

How to consume NET Core api in Angular? ›

Angular CRUD Using . Net Core Web API
  1. Create Angular App.
  2. Adding Services.
  3. Adding Components.
  4. Adding Bootstrap.
  5. Register modules.
  6. Add Routing.
  7. Navigating menus for routing.
  8. Adding component codes.
Sep 16, 2022

Is .NET Core obsolete? ›

NET Core will be fully deprecated, but don't wait to start planning! Deprecation will sneak up on you sooner than you realize. If you spend a little time between now and end-of-life planning and executing, your migration will be nearly pain-free.

Is .NET Core still popular? ›

The . NET framework has remained steadily popular while newer technologies have emerged, according to the Stack Overflow Developer Survey. The tech world is constantly evolving, but . NET has been Microsoft's primary developer platform since 2000, and it continues to thrive.

Is core js needed for Angular? ›

According to this article. Note that core-js has been updated to v3, and is now directly handled by the CLI itself, so it's no longer needed as a dependency of your application. If you look in src/polyfills.

What is the difference between react and Angular in .NET Core? ›

Angular is a JavaScript framework built using TypeScript, while React is a JavaScript library built using JSX. Add a few libraries to React, and you can turn it into a complete framework. But the resulting stack workflow is still very different from Angular, so the comparability is limited.

How are Angular and .NET related? ›

Angular apps are built using a component architecture which includes HTML templating and databinding. These are features that are handled by Razor in ASP.NET via HTML and Tag Helpers, view components and the like.

Which operating systems is .NET Core compatible with? ›

Support. Microsoft supports .NET on Android, Apple, Linux, and Windows operating systems. It can be used on Arm64, x64, and x86 architectures. It's also supported in emulated environments, like macOS Rosetta 2.

References

Top Articles
Latest Posts
Article information

Author: Dan Stracke

Last Updated: 03/09/2023

Views: 5711

Rating: 4.2 / 5 (43 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Dan Stracke

Birthday: 1992-08-25

Address: 2253 Brown Springs, East Alla, OH 38634-0309

Phone: +398735162064

Job: Investor Government Associate

Hobby: Shopping, LARPing, Scrapbooking, Surfing, Slacklining, Dance, Glassblowing

Introduction: My name is Dan Stracke, I am a homely, gleaming, glamorous, inquisitive, homely, gorgeous, light person who loves writing and wants to share my knowledge and understanding with you.