我对 Angular 和 MVC(Razor)有一些了解,我可以使用两者。其中一个需要注意的事情是不要有复杂的授权方案。在 Razor 上进行授权更加容易,特别是与 Core 结合使用时。使用 Angular 处理授权较为困难,因为你必须在客户端和服务器端都进行授权,并保持同步。例如:你只想显示用户有权查看的内容,如果你有一个简单的网站并使用 Masterpage,则仅显示用户允许查看的菜单项,在 Razor 中执行此任务非常容易。但在 Angular 中实现此功能需要更多时间和精力。
Razor 极易与模板配合使用。如果你要开发一个需要多次使用但具有不同布局的网站,使用 Razor 可以轻松实现。
使用 MVC,前端和后端属于同一个应用程序。而使用 Angular,前端和后端需要分开处理,这看起来从安装、维护等方面来说更加昂贵。如果你拥有一个简单的应用程序,我会建议你保持简单(KISS:保持简单,愚蠢)。
MVC 中的前端和后端是相互关联的,这既可以是优点也可以是缺点。如果你有一个没有依赖其他东西的应用程序,那么我认为 MVC 是一个不错的选择。
Angular 不是 W3C 标准并且没有被内置到浏览器中,因此它不能保证未来的兼容性。为了实现未来的兼容性,人们越来越倾向于使用原生 Javascript 与 Web 组件相结合的技术。MVC 可以使用这种技术。阅读有关 Microsoft FAST Design 的文章,可以更好地了解如何将其与 MVC 结合使用。
SPA/MPA 已经不再是一个问题。使用像 PJAX 等库,MPA 也可以实现无闪烁页面。
使用 MVC 没有等待时间,因为所有内容都是直接加载的。已经有足够多的 Angular 网站存在,因为加载需要很长时间。
在使用 Angular 9 后,我还不明白为什么要从 MVC 转向 Angular。Visual Studio 对 MVC 的支持非常好,并且比 VS Code 更好。从生产力的角度来看,我可以用 MVC 比用 Angular 更快地编写代码。如果你有多个前端需要连接同一个后端,那么可能会转向 Angular。但即使如此,MVC 也可以被模块化,甚至可以动态加载它们。
htmx 是个好东西!让 HTML 控制页面的加载方式是正确的方法。我们正在使用 NodeJS 进行样本工作,并对此感到非常兴奋。
更新:我刚刚完成了一个使用nodejs/express/mongodb的项目,它比所有其他技术都要好。我是一名专家级的MVC开发者,但在价格仅为220美元的Chromebook上使用VS Code能够更快、更好地开发。现在我知道为什么它这么受欢迎了。你猜怎么着?它是免费的!还有你知道吗?.NET Core的一部分基于nodejs。控制台应用程序与nodejs服务器相同。然而,你需要将它们放在IIS、Apache或NGINX代理后面。