首页 > 解决方案 > Angular 7 配置或替代方案?

问题描述

我一直在努力解决如何将 Angular 7 实施到我的 .NET Core 2.X 项目中来保持这两个框架的优点,但没有成功。我面临的主要问题是 Angular 想要控制我的前端以及它如何接收它。我的意思是它迫使你对所有东西都使用静态模板,我明白了这个概念,但对于我的项目,这将生成大量的模板/组件或带有一堆未使用的显示元素的模板。拥有更多从服务器接收模板然后处理所有绑定、DI、更新等的通用前端组件更有意义。

我查看了有关动态组件、动态模板URL、自定义元素和许多其他主题的几个选项和问题。但是我看到的大多数答案的问题是,它们实际上都没有动态模板,它们可能使用动态组件,但实际加载的控件最终仍然有一个静态模板。

这个问题似乎被大多数人指出

我确实遇到了一个似乎是一个选项的解决方案,但后来我意识到它必须使用 JIT 编译器运行。当一切都可以提前编译时,这再次增加了客户端不必要的负载。

还有一个关于使用 Angular Elements 的问题,但这显然有其自身的问题,并且如果不分配重新布线或其他变通方法以保持一切正常,实际上并不能解决问题。

动态组件加载器听起来非常有前途,来自Angular 网站它指出

组件模板并不总是固定的。应用程序可能需要在运行时加载新组件。

这意味着可以动态设置模板,但同时也意味着在运行时加载新组件将解决该问题。但是加载的组件有一个静态模板。模板没有生成或更改,或者我只是遗漏了什么?

我看过Angular SSR并且几乎可以处理它,但我似乎无法弄清楚如何通过控制器或以其他方式利用 .NET Core/ASP.NET 或动态服务器生成的内容的任何好处。它似乎只是将编译从客户端卸载到服务器上,但仍然使用相同的静态模板。有没有办法使用 Node.js 呈现 MVC 路由然后发送模块?

曾经有一种方法可以将组件的 TemplateUrl 设置为服务器上的路由,但现在不允许这样做,这使得我发现很多答案都过时了,但我想设置它的确切方式。

我能够弄清楚的唯一真正的选择是使用 MVC 生成动态模块/组件,然后将它们加载到 Angular 应用程序中。通过控制器编译 .cshtml 视图以创建 HTML 字符串,然后用于编译 Angular 模块/组件然后将其发送到客户端并将其加载到 Angular 应用程序中是否可行?

我了解如何将我的视图编译为 html 字符串,但我不确定如何编译 Angular 模块,或者即使这是正确的想法,或者是否有更好的处理方法?

在我看来,这应该是一件相当容易的事情,所有工具似乎都在那里,但不确定如何让事情正常工作。

标签: javascriptangularasp.net-core-mvcangular-cliangular7

解决方案


我最近开始使用 Angular(在使用 .net、jquery、javascript、react 之后),我的第一次交互是直接使用 Angular 7。我注意到的第一件事是我可以多快地开发 Angular,但是有很多文件我什至不确定,但是与反应相比,反应生成的,但反应的学习曲线肯定比 Angular 更高。

如果您需要真正轻量级的东西,那么您绝对应该选择库然后是框架。react 是一个不错的选择,但是它不是 MVC 驱动的,您会发现它与 Angular 非常不同(我从某个时候开始意识到这一点)。

除此之外,如果我的大部分代码都是静态的,我可以选择某种可以预编译的 HTML 模板框架(即 nunjucks)。

对于在 .net 中创建的组件,我认为不可能将它们以 Angular 进行预编译,因为如果您需要那些具有动态数据的组件,您只会在 .net 中创建一些东西。


推荐阅读