在mvc上淘汰js

时间:2015-12-31 11:26:12

标签: asp.net-mvc asp.net-mvc-4 razor knockout.js knockout-2.0

我使用.net MVC和razor视图引擎开发了应用程序。 最近我正在使用knockoutjs用于MVC应用程序。

从10000英尺的鸟瞰图中,我看到两种方法都具有相似的双向绑定机制。

在第一种用于绑定模型的razor语法中,在第二种方法中,我们使用knockout数据绑定属性。

我的理解是,为什么很多人现在更喜欢Knockout和最近的所有嗡嗡声。在淘汰库中替换razor语法有什么主要优势吗?

1 个答案:

答案 0 :(得分:5)

他们彼此无关。

ASP.NET MVC

顾名思义,它使用MVC(模型视图控制器)技术。这意味着您有一个模型(所有业务逻辑),可用于创建视图模型以呈现视图(通过使用剃刀模板)。浏览器可以将数据发布到控制器,控制器通常会通过创建新的视图模型来渲染新视图,并将其作为响应发送给浏览器。

因此,该技术基本上使用浏览器向服务器发送GET或POST请求,服务器以渲染视图进行应答。它可以直接使用,也可以使用AJAX。 (ASP.NET MVC功能更多,可以比渲染视图更多,但这是基本的想法。)

因此,ASP.NET MVC涉及所有操作中的服务器:它必须实例并使用控制器,执行操作并将其结果作为响应发送到浏览器。

敲除

这项技术在几个方面完全不同:

  • 它使用MVVM,它包含视图(HTML)和模型(JavaScript对象)之间的双向绑定。任何一端的更改都会自动应用于另一端。
  • 它发生在客户端,不使用或依赖服务器资源(就其关注Knockout而言)
  • 它通常不涉及繁重的业务逻辑,而是简单的视图模型,可以显示和获取用户的数据。

这就是Knockout能为您做的一切。如果你需要涉及服务器,那么" heavy"业务逻辑,您需要通过发送和接收对象与服务器进行通信,这些对象通常通过公开Web API服务以JSON格式进行。 (这些服务通常使用ASP.NET Web API实现,但也可以使用带有JSON结果的ASP.NET MVC操作实现,这是一个更糟糕的选择)。

结论

因此,ASP.NET MVC涉及控制器和浏览器与服务器之间的通信的持续使用,而Knockout是一种纯粹的客户端技术,根本不需要服务器。当然,要使Knockout应用程序有用,您通常会将其与服务器进行通信。

OTOH,Knockout允许创建单页应用程序,它是一个可以自行运行的JavaScript应用程序,无需从服务器加载新的完整页面,并且通常以Web API的形式与服务通信。这样做的一个优点是,即使没有服务器,应用程序也可以工作,并且响应速度更快,因为它不依赖于与服务器进行通信来刷新视图。

相关问题