javascript - 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 模块,或者即使这是正确的想法,或者是否有更好的处理方法?
在我看来,这应该是一件相当容易的事情,所有工具似乎都在那里,但不确定如何让事情正常工作。
解决方案
我最近开始使用 Angular(在使用 .net、jquery、javascript、react 之后),我的第一次交互是直接使用 Angular 7。我注意到的第一件事是我可以多快地开发 Angular,但是有很多文件我什至不确定,但是与反应相比,反应生成的,但反应的学习曲线肯定比 Angular 更高。
如果您需要真正轻量级的东西,那么您绝对应该选择库然后是框架。react 是一个不错的选择,但是它不是 MVC 驱动的,您会发现它与 Angular 非常不同(我从某个时候开始意识到这一点)。
除此之外,如果我的大部分代码都是静态的,我可以选择某种可以预编译的 HTML 模板框架(即 nunjucks)。
对于在 .net 中创建的组件,我认为不可能将它们以 Angular 进行预编译,因为如果您需要那些具有动态数据的组件,您只会在 .net 中创建一些东西。
推荐阅读
- javascript - 删除 Firestore 中的嵌套引用
- excel - VBA 代码不运行,定义工作簿和工作表时出错
- javascript - 我可以使用 Angular 的日期管道格式化没有偏移的时区吗?
- python-3.x - 装饰器中的参数在装饰器范围内不可用?
- reactjs - 我可以在反应组件中调用反应组件吗
- django - 如何设置crispy_forms' Layout 以呈现精确到小数点后2 位的Django DecimalField?
- sql - SQL 将日期字段中的值转置为列
- react-native - 组件渲染时只打开一次 Realm 数据库(React Native)
- rest - RestTemplate 仅返回第一行,响应中缺少行
- php - 如何在symfony中对卡片进行排序