通过 mvc 淘汰 js
Knockout js over mvc
我使用 .net MVC 和 Razor 视图引擎开发了应用程序。
最近我正在研究用于 MVC 应用程序的 knockoutjs。
从 10000 英尺的鸟瞰图,我看到这两种方法都具有相似的双向绑定机制。
在第一种方法中,razor 语法用于绑定模型,在第二种方法中,我们使用 knockout 数据绑定属性。
我的理解是,为什么现在很多人都喜欢 Knockout 和最近的所有嗡嗡声。与淘汰库相比,替换剃刀语法有什么主要优势吗?
他们之间没有任何关系
ASP.NETMVC
顾名思义,它采用了MVC(模型视图控制器)技术。这意味着您有一个模型(所有业务逻辑),可用于创建视图模型以呈现视图(通过使用 razor 模板)。浏览器可以post数据给控制器,控制器通常会通过创建一个新的视图模型来渲染一个新的视图,并将其作为响应发送给浏览器。
所以这个技术基本上是利用浏览器向服务器发送GET或POST请求,服务器以渲染的视图进行响应。它可以直接执行,也可以使用 AJAX。 (ASP.NET MVC 更通用,可以做的不仅仅是渲染视图,但这是基本思想)。
因此 ASP.NET MVC 在所有操作中涉及服务器:它必须实例化并使用控制器,执行操作并将其结果作为响应发送给浏览器。
淘汰赛
这项技术在几个方面完全不同:
- 它使用 MVVM,它包含视图 (HTML) 和模型(JavaScript 对象)之间的 double-way 绑定。任何一端的更改都会自动应用到另一端。
- 它发生在客户端,不使用或依赖于服务器资源(就 Knockout 而言)
- 它通常不涉及繁重的业务逻辑,而是可以显示和获取用户数据的简单视图模型。
这就是 Knockout 能为您做的一切。如果需要涉及服务器,以及“繁重”的业务逻辑,则需要通过发送和接收对象与服务器进行通信,通常通过公开 Web API 服务以 JSON 格式进行。 (这些服务通常使用 ASP.NET Web API 实现,但也可以使用 ASP.NET MVC 操作实现 JSON 结果,这是一个更糟糕的选择。
结论
所以ASP.NETMVC涉及控制器的持续使用以及浏览器和服务器之间的通信,而Knockout是一种完全不需要服务器的纯客户端技术。当然,要使 Knockout 应用程序有用,您通常会与服务器进行通信。
OTOH,Knockout 允许创建一个单页应用程序,这是一个 JavaScript 应用程序,它可以 运行 自身,无需从服务器加载新的完整页面,并且通常与服务通信, 以 Web APIs 的形式。这样做的一个优点是应用程序即使在另一端没有服务器的情况下也可以工作,并且响应速度更快,因为它不依赖于与服务器通信来刷新视图。
我使用 .net MVC 和 Razor 视图引擎开发了应用程序。 最近我正在研究用于 MVC 应用程序的 knockoutjs。
从 10000 英尺的鸟瞰图,我看到这两种方法都具有相似的双向绑定机制。
在第一种方法中,razor 语法用于绑定模型,在第二种方法中,我们使用 knockout 数据绑定属性。
我的理解是,为什么现在很多人都喜欢 Knockout 和最近的所有嗡嗡声。与淘汰库相比,替换剃刀语法有什么主要优势吗?
他们之间没有任何关系
ASP.NETMVC
顾名思义,它采用了MVC(模型视图控制器)技术。这意味着您有一个模型(所有业务逻辑),可用于创建视图模型以呈现视图(通过使用 razor 模板)。浏览器可以post数据给控制器,控制器通常会通过创建一个新的视图模型来渲染一个新的视图,并将其作为响应发送给浏览器。
所以这个技术基本上是利用浏览器向服务器发送GET或POST请求,服务器以渲染的视图进行响应。它可以直接执行,也可以使用 AJAX。 (ASP.NET MVC 更通用,可以做的不仅仅是渲染视图,但这是基本思想)。
因此 ASP.NET MVC 在所有操作中涉及服务器:它必须实例化并使用控制器,执行操作并将其结果作为响应发送给浏览器。
淘汰赛
这项技术在几个方面完全不同:
- 它使用 MVVM,它包含视图 (HTML) 和模型(JavaScript 对象)之间的 double-way 绑定。任何一端的更改都会自动应用到另一端。
- 它发生在客户端,不使用或依赖于服务器资源(就 Knockout 而言)
- 它通常不涉及繁重的业务逻辑,而是可以显示和获取用户数据的简单视图模型。
这就是 Knockout 能为您做的一切。如果需要涉及服务器,以及“繁重”的业务逻辑,则需要通过发送和接收对象与服务器进行通信,通常通过公开 Web API 服务以 JSON 格式进行。 (这些服务通常使用 ASP.NET Web API 实现,但也可以使用 ASP.NET MVC 操作实现 JSON 结果,这是一个更糟糕的选择。
结论
所以ASP.NETMVC涉及控制器的持续使用以及浏览器和服务器之间的通信,而Knockout是一种完全不需要服务器的纯客户端技术。当然,要使 Knockout 应用程序有用,您通常会与服务器进行通信。
OTOH,Knockout 允许创建一个单页应用程序,这是一个 JavaScript 应用程序,它可以 运行 自身,无需从服务器加载新的完整页面,并且通常与服务通信, 以 Web APIs 的形式。这样做的一个优点是应用程序即使在另一端没有服务器的情况下也可以工作,并且响应速度更快,因为它不依赖于与服务器通信来刷新视图。