【问题标题】:Knockout js over mvc [closed]在 mvc 上淘汰 js [关闭]
【发布时间】:2016-04-05 09:18:21
【问题描述】:

我已经使用带有 razor 视图引擎的 .net MVC 开发了应用程序。 最近我正在研究用于 MVC 应用程序的 knockoutjs。

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

在第一种方法中,我们使用 razor 语法来绑定模型,而在第二种方法中,我们使用剔除数据绑定属性。

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

【问题讨论】:

  • 新的一年,我认为这个问题值得深思熟虑,即使是一个固执己见的话题;)
  • @jim tollan 起初我认为这个问题应该被关闭,因为它过于宽泛,或者主要基于意见。但是,我认为可以像我所做的那样解释基础知识,并且一些人可能值得快速掌握这些技术之间的区别。当然,这可以用许多不同的方式来解释,并用解释填充很多空间,但基础就是基础,并不难解释。也许我会看到这个问答“擦肩而过”,也可能不会。

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


【解决方案1】:

他们没有任何关系。

ASP.NET MVC

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

所以这项技术基本上是使用浏览器向服务器发送 GET 或 POST 请求,服务器以渲染的视图进行响应。它可以直接完成,也可以使用 AJAX。 (ASP.NET MVC 更加通用,可以做的不仅仅是渲染视图,但这是基本思想)。

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

淘汰赛

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

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

这就是 Knockout 能为您做的所有事情。如果您需要涉及服务器,以及“繁重”的业务逻辑,您需要通过发送和接收对象与服务器进行通信,您通常通过暴露 Web API 服务以 JSON 格式进行。 (这些服务通常使用 ASP.NET Web API 实现,但也可以使用带有 JSON 结果的 ASP.NET MVC 操作来实现,这是一个更糟糕的选择)。

结论

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 2014-03-31
    • 2012-05-11
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    相关资源
    最近更新 更多