如何使用 Angular 7 保持 AngularCLIServer 在 asp.net 核心上的构建之间运行

Posted

技术标签:

【中文标题】如何使用 Angular 7 保持 AngularCLIServer 在 asp.net 核心上的构建之间运行【英文标题】:how to keep the AngularCLIServer running between builds on asp.net core with Angular 7 【发布时间】:2019-08-05 14:15:21 【问题描述】:

我正在使用 ASPNetCore 和 Angular 7。我的 Angular 应用程序变得非常大,因此每次运行时都重新编译 C# 代码和 Angular 代码变得很麻烦。

我的 Startup.cs 文件中有这一行。

  if (env.IsDevelopment()) 
     spa.UseAngularCliServer(npmScript: "start");
  

是否可以 A. 在我终止 ASPNet 应用程序时保持其运行,或者 B 单独运行它并仍然通过 aspnet 应用程序使用的同一 SSL 端口路由请求?

由于 Angular 有热模块替换,我希望保持 99% 的时间运行,并在更改 C# 代码时重新编译我的后端。

【问题讨论】:

如果我们有项目配置的基本细节就很容易考虑,那么您可以分享您的Program.csStartup.cs 文件配置或任何其他与配置相关的文件吗? 【参考方案1】:

来自文档

独立运行“ng serve” 当 ASP.NET Core 应用程序以开发模式启动时,该项目被配置为在后台启动它自己的 Angular CLI 服务器实例。这很方便,因为您不必手动运行单独的服务器。

这种默认设置有一个缺点。每次修改 C# 代码并且 ASP.NET Core 应用程序需要重新启动时,Angular CLI 服务器都会重新启动。启动备份大约需要 10 秒。如果您经常编辑 C# 代码并且不想等待 Angular CLI 重新启动,请在外部运行 Angular CLI 服务器,独立于 ASP.NET Core 进程。这样做:

在命令提示符下,切换到 ClientApp 子目录,然后启动 Angular CLI 开发服务器:

cd ClientApp
npm start

重要

使用 npm start 来启动 Angular CLI 开发服务器,而不是 ng serve,以便遵循 package.json 中的配置。要将其他参数传递给 Angular CLI 服务器,请将它们添加到 package.json 文件中的相关脚本行。

修改您的 ASP.NET Core 应用程序以使用外部 Angular CLI 实例,而不是启动它自己的实例。在您的 Startup 类中,将 spa.UseAngularCliServer 调用替换为以下内容:

C#

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

当您启动 ASP.NET Core 应用程序时,它不会启动 Angular CLI 服务器。而是使用您手动启动的实例。这使其能够更快地启动和重新启动。它不再等待 Angular CLI 每次都重新构建您的客户端应用程序。

【讨论】:

开发中的get/port/put/delete调用需要使用什么端口或url呢?我尝试了项目调试中列出的所有端口,但没有一个工作,甚至启用了 cors。 我看到了大量的“剩余”npm 进程,因为在开发环境中重新启动我的应用程序时 npm 进程没有被杀死。此设置还可以防止这些剩余进程。 有了.NET 6,好像不再有Startup.cs,SPA是在.csproj中配置的。如何在 .NET6 中进行配置

以上是关于如何使用 Angular 7 保持 AngularCLIServer 在 asp.net 核心上的构建之间运行的主要内容,如果未能解决你的问题,请参考以下文章

Angular+ngrx:如何在路由器 url 遍历中保持存储状态?

升级到 9.0 和 angular 7 后修复 angular-redux/store

更新Angular 5数据表时如何保持垂直滚动?

Angular CDK拖放 - 如何保持原始位置?

如何保持在 mat-select angular 5 中选择的值

angular2-img-cropper 不保持实际图像的大小