问题描述
我一直在努力研究如何将 Angular 7 实现到我的 .NET Core 2.X 项目中,但没有成功。 我面临的主要问题是 Angular 想要控制我的前端以及它如何接收它。 我的意思是它迫使您对所有内容都使用静态模板,我明白了这个概念,但是对于我的项目,这将生成大量模板/组件或带有一堆未使用的显示元素的模板。 拥有更多从服务器接收模板然后处理所有绑定、DI、更新等的通用前端组件更有意义。
我查看了关于动态组件、动态模板 URL、自定义元素和许多其他主题的几个选项和问题。 但是我在大多数这些答案中看到的问题是,它们实际上都没有动态模板,它们可能使用动态组件,但实际加载的控件最终仍然具有静态模板。
我确实遇到了一个似乎是一个选项的,但后来我意识到它必须与 JIT 编译器一起运行。 当一切都可以提前编译时,这再次给客户端增加了不必要的负载。
还有一个是关于使用 Angular Elements 的,但这有其自身的,如果没有重新布线或其他解决方法来保持一切正常工作,确实无法解决问题。
Dynamic Component Loader 听起来非常有前途,来自声明
组件模板并不总是固定的。 应用程序可能需要在运行时加载新组件。
这意味着模板可以动态设置,但同时,它意味着在运行时加载新组件将解决这个问题。 但是加载的组件有一个静态模板。 模板没有生成或更改,或者我只是遗漏了什么?
我看过并且几乎可以处理它,但我似乎无法弄清楚如何通过控制器或以其他方式利用 .NET Core/ASP.NET 或动态服务器生成的内容的任何好处。 它似乎只是将编译从客户端卸载到服务器上,但仍然使用相同的静态模板。 有没有办法使用 Node.js 渲染 MVC 路由然后发送模块?
曾经有一种方法可以将组件的 TemplateUrl 设置为服务器上的路由,但现在不允许这样做,这使得我发现的许多答案已经过时,但我想设置它的确切方式。
我能想到的唯一真正的选择是使用 MVC 生成动态模块/组件,然后将它们加载到 Angular 应用程序中。 通过控制器编译 .cshtml 视图以创建一个 HTML 字符串,然后用于编译 Angular 模块/组件,然后将其发送到客户端并将其加载到 Angular 应用程序中是否可行?
我了解如何将我的视图编译为 html 字符串,但我不确定如何编译 Angular 模块,或者即使这是正确的想法,或者是否有更好的处理方法?
在我看来,这应该是一件相当容易的事情,所有工具似乎都在那里,但不确定如何让事情正常工作。
1楼
mukesh joshi
1
2019-02-14 09:49:56
我最近开始使用 Angular(在使用 .net、jquery、javascript、react 之后),我的第一次交互是直接使用 angular 7。我注意到的第一件事是我可以在 angular 中开发多快,但是有很多文件我什至不确定,但是与反应相比生成的,但反应的学习曲线肯定比 Angular 高。
如果您需要真正轻量级的东西,那么您绝对应该选择库然后是框架。 react 是一个不错的选择,但是它不是 MVC 驱动的,您会发现它与 Angular 非常不同(我从某个时候意识到它)。
除此之外,如果我的大部分代码都是静态的,我可以选择某种可以预编译的 HTML 模板框架(即 nunjucks)。
对于在 .net 中创建的组件,我认为不可能在 angular 中预编译它们,因为如果您需要那些具有动态数据的组件,您只会在 .net 中创建一些东西。