【发布时间】:2019-07-07 09:36:19
【问题描述】:
我一直在苦苦思索如何将 Angular 7 实施到我的 .NET Core 2.X 项目中,以保持两个框架的优点,但没有成功。我面临的主要问题是 Angular 想要控制我的前端以及它如何接收它。我的意思是它迫使你对所有东西都使用静态模板,我明白了这个概念,但是对于我的项目,这将生成大量的模板/组件或带有一堆未使用的显示元素的模板。拥有更多从服务器接收模板然后处理所有绑定、DI、更新等的通用前端组件更有意义。
我查看了有关动态组件、动态模板URL、自定义元素和许多其他主题的几个选项和问题。但我看到的大多数答案的问题是,它们实际上都没有动态模板,它们可能使用动态组件,但实际加载的控件最终仍然有一个静态模板。
This question seems to be pointed to most
我确实遇到了solution,这似乎是一个选项,但后来我意识到它必须使用 JIT 编译器运行。当一切都可以提前编译时,这又给客户端增加了不必要的负载。
还有一个关于使用 Angular Elements 的方法,但它有自己的 problems apparently,如果不分配重新布线或其他变通方法以保持一切正常,确实无法解决问题。
动态组件加载器听起来很有希望,从 Angular site 来看
组件模板并不总是固定的。一个应用程序可能需要 在运行时加载新组件。
这意味着模板可以动态设置,但同时也意味着在运行时加载新组件将解决该问题。但是加载的组件有一个静态模板。模板无处生成或更改,还是我只是遗漏了什么?
我查看了Angular SSR 并且几乎可以处理它,但我似乎无法弄清楚如何通过控制器或以其他方式利用 .NET Core/ASP.NET 或动态服务器生成的任何好处内容。它似乎只是将编译从客户端卸载到服务器上,但仍然使用相同的静态模板。有没有办法使用 Node.js 渲染 MVC 路由然后发送模块?
曾经有一种方法可以将组件的 TemplateUrl 设置为服务器上的路由,但现在不允许这样做,这使得我发现的很多答案都过时了,但我想设置它的确切方式.
我能想到的唯一真正的选择是使用 MVC 生成动态模块/组件,然后将它们加载到 Angular 应用程序中。通过控制器编译 .cshtml 视图以创建 HTML 字符串,然后用于编译 Angular 模块/组件,然后将其发送到客户端并将其加载到 Angular 应用程序中是否可行?
我了解如何将我的视图编译为 html 字符串,但我不确定如何编译 Angular 模块,或者即使这是正确的想法,或者是否有更好的处理方法?
在我看来,这应该是一件相当容易的事情,所有工具似乎都在那里,但不知道如何让事情正常工作。
【问题讨论】:
-
为什么使用角度?您即将禁用 Angular 的大部分优势。可能你应该研究轻量级渲染库的方向,比如 React 或 Vue。
-
@smnbbrv 基本上我的背景是 AngularJs,主要是我尝试使用 Angular 的原因,我认为由于所有内容最终都编译为 JS,我可能能够简单地绕过 Angular 的控制模板,只使用与我的应用程序相关的内容。我不反对切换到另一个框架,实际上是在我原来的问题中但把它拿出来(不想脱离话题)。我对 React 或 Vue 不是很熟悉,鉴于我的最终目标(轻量级、MVC 等),你知道哪一个更适合我的应用程序吗?
标签: javascript angular asp.net-core-mvc angular-cli angular7