带有Web API的纯前端JavaScript与带有ajax的MVC视图
Pure Front end JavaScript with Web API versus MVC views with ajax
这更多的是讨论人们对如何拆分web应用程序的看法。
我已经习惯了创建一个带有所有视图和控制器的MVC应用程序。我通常会创建一个完整的视图,并在完整页面请求时将其传递回浏览器,除非有特定的区域我不想立即填充,然后使用DOM页面加载事件调用服务器使用AJAX加载其他区域。
同样,当涉及到部分页面刷新时,我将调用一个MVC动作方法,它将返回HTML片段,然后我可以使用它来填充页面的部分。这将适用于我不想减慢初始页面加载速度的区域,或者更适合AJAX调用的区域。表分页就是一个例子。如果您想转到下一页,我希望通过AJAX调用获得该信息,而不是使用整个页面刷新。但是AJAX调用仍然会返回一个HTML片段。
我的问题是……我的想法是过时的,因为我来自一个。net背景,而不是一个纯粹的前端背景?与我一起工作的一个聪明的前端开发人员,更喜欢在MVC视图中或多或少什么都不做,而宁愿在前端做所有的事情。直到web API调用填充页面。因此,比起调用返回HTML的MVC动作方法,他更愿意返回一个标准对象,并使用javascript创建页面的所有元素。
前端开发人员的方式意味着我通常从MVC模型验证中获得的任何好处,包括客户端验证,都将消失。这也意味着我从创建视图、强类型html模板等方面获得的任何好处都将不复存在。
我相信这意味着我需要为前端和后端验证编写相同的验证。javascript还需要有许多方法来创建DOM的所有不同部分。例如,在向表中添加新行时,我通常会使用MVC部分视图来创建行,然后将其作为AJAX调用的一部分返回,然后将其注入表中。通过使用纯前端方式,javascript将为来自api调用的行接收一个对象(例如,一个产品),然后从该对象创建一行。创建表行的每个单独部分。
所讨论的网站将有许多不同的领域,从管理,表单,产品搜索等。一个我认为不需要以单页应用程序方式构建的网站。
大家对此有什么看法?
我很想听听前端和后端开发人员的意见。
更新根据一项建议,我在程序员栈交换中创建了一个线程以供讨论。
链接前端开发者的方式意味着任何好处,我通常得到MVC模型验证,包括客户端验证走了
不,不一定。您也可以在Web Api中进行模型验证,请遵循此参考。
我的问题是……我对这个问题的看法是不是过时了,因为我来自.net背景,而不是纯粹的前端背景?
使用Web API代替MVC控制器将有利于编写不同平台的应用程序,包括移动,平板电脑,桌面,Web等。所以这个决定取决于你要支持多少设备,以及依赖于你的数据的其他不同应用程序是什么。
同样,返回对象(尤其是JSON)将是轻量级的,并且比返回HTML具有高可伸缩性。
使用Web API的另一个优点是它是纯HTTP的,不需要玩Razor。使用Web API,您可以使用HTML, JQuery和c#组合完成端到端应用程序,而无需编写大量razor代码。
- 在MVC 4中,对Controller的Ajax调用为空
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- 通过mvc中的ajax动作链接获取关于成功的响应头
- 使用 JQUERY AJAX (Spring MVC) 从控制器中删除
- 如何在Razor MVC 5.2.3 Ajax中使用多个提交按钮
- 以非ajax方式将js对象传递给mvc操作
- Spring MVC Ajax请求刷新动态表
- Knockout asyncCommand / Ajax MVC ActionResults
- 我如何从javascript文件中AJAX发布到MVC操作
- ajax.beginform() 不更新部分视图 MVC
- Webgrid ajax call MVC 5
- MVC AJAX POST 请求在控制器中显示为空
- 当Json Length过长时,对ASP.NET MVC Controller的Ajax调用返回404
- 成功生成ajax MVC中的表
- 使用 ajax (MVC) 的 JQuery UI 可折叠高度问题
- 上传文件jQuery ajax MVC
- knocket将绑定应用于从ajax mvc contrib网格动态加载的html
- 点击按钮后,点击如何使用javascript发出请求,并使用ajax MVC Kendo UI网格调用读取方法
- 如何传递html的内容与ajax (MVC)