Asp.net 核心 - razor 页面 (.cshtml) 对比 angular 2+

Asp.net core - razor pages (.cshtml) vs angular 2+

我一直在学习 asp.net 核心和 angular,但是我对 asp.net 核心剃须刀页面是什么感到有点困惑。我知道 angular 是构建动态应用程序的前端框架,我知道 asp.net 核心是用于服务器端的。然而,asp.net 核心还包括剃须刀页面 (.cShtml),可让您编写 html 代码并将 c# 插入其中。 Razor 页面还可以包含部分视图等,但是您可以在不使用任何类似 React 或 angular 的情况下构建一个完整的网站并且仍然具有相同的动态页面吗? 如果我确实在前端使用 angular,您是否仍然可以使用来自 c# 的表单等验证?

是的,您可以使用 Razor 页面构建动态站点,您可以像这样使用

@foreach (var item in itemList)
{
   <p>@item</p>
}

如果您决定使用 angular,我认为您的学习曲线会更陡峭,短期内学习起来会更难,但是为了回答您的第二个问题,是的,您可以使用内置的身份验证通过存储 JWT 令牌并将其传递到 headers 中,以便为您向服务器发出的每个请求

编辑:Angular 我认为 2+ 更好,因为你可以更灵活地做事,但它需要更多的开销工作,而剃须刀在短期内会更快,但会遇到困难scale-ability

简单地说 - Razor 是您将在经典 MVC 应用程序中使用的视图引擎,它允许您在 html (chtml) 中编写服务器端代码 (C#),而 angular 是基于打字稿的单页应用程序框架。

您会发现自己仍然使用 angular 在 Razor 或 NPM 包中包含某些 javascript 库,这实际上归结为同一件事。

使用一个或另一个的决定归结为几个因素,例如但不限于

  • 性能
  • 框架的技能和经验
  • 主持

通常您可以同时使用两者来实现您的要求(构建站点),但不建议同时使用两者。

目前的趋势似乎是使用Angular作为clientapp,让.net core作为业务逻辑CRUD等后端

Razor 允许创建的动态页面 "dynamic" 其内容可能因应用程序逻辑而异。但是一旦页面呈现(出现在屏幕上),它就是静态的。如果您只想更改此页面上的一个数字,则需要刷新整个页面。

想象一下,您想要在您的页面上显示一个姓名列表。您还有一个表单可以在同一页面上将人员添加到该列表中。自然地,您希望在用户按下 "submit" 按钮时立即在列表中显示一个新名称。在 Razor 中,您需要重绘整个页面。这对用户来说是可见的,因为浏览器会闪烁,而这是当今人们既不希望也不期望的事情。

要在不刷新页面的情况下解决动态更改问题,您需要将 JavaScript 脚本添加到 Razor 页面。 JS是能够直接与浏览器对话的东西。 Angular/React/Vue/Blazor 本质上与 JavaScript 类似,但提供了更加结构化和简化的方法来实现该目标。