Angular 应用程序:在 Asp.Net Core 项目中的优缺点

7
我想使用Angular创建一个单页 Web 应用程序,但我无法决定项目类型。是通过类似于angular-cli的工具生成文件还是在Asp.Net Core项目中生成文件。
我有一些问题。
1. 在 ASP.NET Core 项目上构建 Angular 应用程序的优缺点是什么? 2. 我应该在哪些情况下选择将 Angular 应用程序放置在 ASP.NET Core 项目中?

这个问题非常基于个人观点...例如,我喜欢将它们分开,而其他人可能有不同的想法。 - penleychan
2
我有完全相同的问题。我使用ASP.Net Core顶部的VS 2017中的Angular模板制作了一个简单的概念验证应用程序。我的印象是该应用程序变得臃肿,调试版本的应用程序大小超过3 MB。在我的情况下,我根本没有编写任何服务器端代码,ASP.Net也许是多余的?服务器端渲染,我不知道是否正在运行。我认为这个问题/答案并不基于观点。只列出事实,即使用ASP.Net Core与Angular的好处。 - Martin Larsson
1个回答

6

我想试着解答这个问题。虽然有些方面的答案是基于个人意见的。

我刚刚在比较两个版本,因为我参与了一个新项目。

首先是一些事实

  • 在ASP.Net core应用程序中创建的Angular项目与.Net代码没有任何依赖关系。您可以导航到该目录并键入ng serve,仅运行它本身。

  • 如果您因某种原因后来决定不合并它,则可以将Angular代码复制到另一个目录或仓库并单独托管它。您所要做的就是复制粘贴Angular代码,然后删除启动.cs中有关内部托管的一些行。

  • 添加到AspNet Core模板中的代码与基本的Angular应用程序非常接近,只是增加了一些示例。

  • 如果您使用登录功能模板,它会在后端实现oidc客户端和标识服务器(意见),几乎与我自己编写的方式相同。如果您不喜欢它,没有什么可以阻止您重写它。最坏的情况下,它是如何完成的很好的示例。

  • 截至今天,该模板使用的是Angular 8.0.0,您只需更改package.json以获取最新版本并运行npm install即可。它很好用。

  • 您仍然可以在组合项目中为Angular部分使用Visual Studio Code。

以下是我选择不同版本的情况(警告:包含个人意见)

何时选择asp.net core angular项目。

  • 小型Web应用程序,具有有限的功能。
  • 小团队,可能是同一个人编写Angular代码和API代码。
  • 如果您不确定。您总是可以稍后拆分。

何时选择单独的应用程序。

  • 具有部署构建和自动化的大型团队。
  • 如果您想将Angular和Asp.net Core分开托管(出于诸如实现最大性能和负载平衡等原因,适用于成千上万的访问者的应用程序)。
  • 单独的人编写Angular和Asp.net。
  • 您不喜欢将其全部放在同一个存储库中,并希望将其拆分。
  • 在较大的团队和具有多个API的上下文中,您可能仍然需要处理CORS,但如果没有,则至少需要考虑它才能使其工作。
  • 如果您不确定,您总是可以将其组合为一个应用程序。

你是否经历过“事后分裂”这一部分?我的主要关注点是在使用asp.net core angular项目时对后端进行热修复。 - anon
1
我最近在一个项目中使用了组合模板版本。两个月后,我们将Angular拆分到不同的文件夹中,并完全从asp net core中删除它。花费了大约2个小时才能构建它,可能还需要另外一个小时才能浏览并删除所有不必要的代码。 - JensB
3
我们分开的原因是我对在 ASP.NET Core 管道中集成和构建 AngularFeeling 感到烦恼。我想要它们独立。同时,我也希望能够在不需要重新部署后端的情况下部署 Angular。 - JensB
这正是我想要做的原因。你有没有碰巧写过或博客记录下所有需要完成的步骤? - anon
很遗憾,我没有时间。我所做的只是简单的事情。从dot net core中删除了应用程序(首先复制了内容到其他地方),从Startup.cs中删除了所有SPA相关的内容。创建了一个新的Angular项目,并复制粘贴了所有组件,然后编辑了app.modules以使其重新工作。我们的项目并不是很庞大,所以所有这些都在几个小时内完成了。 - JensB
我重写这个模块以及 package.json 的原因是我不喜欢微软添加的所有额外内容。我想要一个干净的安装环境,在其中添加我知道需要的东西,并删除所有其他部分,直到证明我也需要它们为止。我可能删除了超过 10 个包,使构建时间更快,生成的文件更小。 - JensB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接