【问题标题】:How to bundle .NetCore API + Angular Front end如何捆绑 .Net Core API + Angular 前端
【发布时间】:2020-05-12 16:22:39
【问题描述】:

我有一个面向公众的 Angular 前端,它连接到 .NetCore 后端。这两个项目使用 webpack 捆绑在一起。问题是,我需要启用服务器端渲染,并且 Microsoft 已弃用 / 使 UseSpaPrerendering 过时。我确实遵循了这个tutorial,但它在 .net core 3.0/3.1 中根本不能很好地工作。当我得到这个工作时,我得到一个 FOUC(未渲染内容的 Flash)并且页面加载速度非常慢。

在上述情况下,如何部署具有服务器端渲染的 .net core API/Angular 前端应用程序?

【问题讨论】:

    标签: c# angular webpack .net-core


    【解决方案1】:

    您是否已经尝试将应用程序部署到 IIS? 或者您也可以将 ASPNETCORE_ENVIRONMENT(项目属性 --> 调试 --> ASPNETCORE_ENVIRONMENT = Production)更改为 prod,然后运行应用程序。

    现在运行应用程序时不会构建角度包。为此,您必须从 ClientApp 文件夹运行以下命令(检查您的 csproj 文件,它们就在那里):

    npm run build --prod
    npm run build:ssr --prod
    

    现在生成了 Angular 构建文件。如果您在 dist/server 文件夹旁边看到 dist/browser 文件夹,则应用程序不会在生产模式下呈现。浏览器文件夹的内容应该在服务器文件夹旁边(这是一个已知的错误,但微软不会再改变这个)。如果不是这种情况,您始终可以通过更改 angular.json 文件来解决此问题:projects:ClientApp:architect:build:options:outputPath = dist 而不是 dist/browser。这样,应用程序在开发模式下的行为将与生产模式相同。 “浏览器”文件将始终在 dist 文件夹中结束,而 ASP.NET Core 将始终在 dist 文件夹中查找,无论环境设置如何。

    在您的 Angular 服务器/浏览器文件构建完成后,您应该能够像常规一样在 prod 模式下运行应用程序。

    你可以试试这个吗?我也试试。

    更新:

    我使用 .NET Core 3.1 尝试了来自 https://medium.com/@pieterjandeclippel/server-side-rendering-in-asp-net-core-angular-6df7adacbdaa 的指南,但它似乎仍然有效。

    您可以尝试执行以下步骤吗?:

    1. 打开 angular.json 文件,找到 projects:ClientApp:architect:build:options:outputPath 设置并确保将其设置为 dist 而不是 分配/浏览器。将此设置为 dist 将使应用在开发和生产模式下的行为方式相同。
    2. 可选择删除 ClientApp 中的 dist 文件夹。
    3. 从您的 ClientApp 文件夹运行以下命令:npm run build --prodnpm run build:ssr --prod

    4. 打开您的项目属性页 → 调试选项卡 → 将 ASPNETCORE_ENVIRONMENT 更改为生产

    5. F5 运行应用程序

    你得到什么结果?如果这样的操作效果不佳,您还可以从“输出”窗口中读取大量信息...

    如果这有效,那么您似乎只需要更加耐心,并等待服务器构建文件出现。所以在开发过程中:

    1. 您可以将 ASPNETCORE_ENVIRONMENT 变量设置为 Development
    2. 您可以删除 ClientApp/dist 文件夹
    3. 当您运行项目时,将运行浏览器+服务器构建命令,如 Startup.cs 中指定的那样
    4. 请耐心等待 dist/server 文件夹出现
    5. 刷新浏览器窗口

    【讨论】:

      猜你喜欢
      • 2021-03-12
      • 2021-07-27
      • 1970-01-01
      • 2020-05-01
      • 2021-01-05
      • 2021-03-28
      • 2019-05-07
      • 2018-05-01
      • 2017-08-29
      相关资源
      最近更新 更多