使用 Angular 渲染 ASP.NET 核心视图创建 SPA 网站是多余的吗?



我刚刚开始学习 Angular 2 和 Typescript 以创建单页应用程序,在我看来,我将能够使用 Angular (SPA) 或 ASP.NET Core 视图(传统的 Web 应用程序),但不能两者兼而有之。这是真的吗?我花了很多时间学习 ASP.NET 核心视图(标记帮助程序、视图组件等)。我很乐意得到一些建议...

这取决于您要实现的目标,但在大多数情况下,您不需要在 Angular 2 应用程序的后台运行任何服务器端 HTML 渲染器,如 ASPNET MVC。

最佳做法是保持 SPA 独立,并且仅使用服务器端技术构建 API,在 ASPNET WebAPI 中。这样,您的 SPA 将与仅依赖您的 API 的服务器完全分离。

更新:

目前,我正在参与在Azure中运行后端的项目。我们正在运行微服务/w ASPNET Core WebAPI,我们有 Angular 2 应用程序与我们的 API 对话。我们使用vscode进行Angular 2开发,使用Visual Studio 2017进行.NET相关内容。

如果你关心SEO,有一个名为Angular Universal的东西,它已经是Angular 4核心的一部分(它将最终像下周一样发布),它负责服务器端渲染,但你必须设置你的服务器才能处理这种情况。

另外@Kuncevic答案:

不建议对 Angular 使用剃刀渲染的页面。

Angular 包含所有逻辑结构:ifforeach循环。

如果你在剃刀中这样做,你会破坏你的模型绑定,当你更新你的角度模型时,你的页面不会更新。

建议

要么使用角度和静态角度页面 + dotnet 核心作为 API。

或使用 Dotnet 核心 API + razor 页面,不要使用 Angular。

缺点

如果您使用 Angular 并通过 api 调用动态加载您的数据,您的页面不再被谷歌等搜索引擎正确索引,这意味着:您失去了所有的 SEO 价值。

有一些修复/技术可以为您预呈现页面,包括数据。 但是您必须按照这些技术需要的方式构建/构建页面。

如果你需要搜索引擎优化。我建议你先研究一下!

Issac...对你的问题的简短回答是 - 是的。

从理论上讲,您实际上可以将服务器渲染的模板(很可能您指的是 Razor 模板)与客户端渲染的模板(HTML5 模板)混合在一起。

但是,出于安全目的,不应混合使用服务器/客户端呈现的模板,例如引入 XSS 攻击的向量。

虽然这个问题与 Angular 2.0 有关,但 AngularJS (1.x) 安全文档明确指出"不要混合客户端和服务器模板"。这个概念仍然适用于Angular 2.0

最新更新