首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >集成backbone.js和ASPNET有意义吗?

集成backbone.js和ASPNET有意义吗?
EN

Stack Overflow用户
提问于 2011-10-08 09:10:58
回答 2查看 7.3K关注 0票数 66

我不是这些构建块的专家,但乍一看似乎是:

  • ASPNET希望在服务器端为应用程序生成视图和管理模型。它将浏览器视为一个有点愚蠢的表示引擎,是服务器为其提供的视图的使用者。
  • backbone.js希望在浏览器中生成视图并管理模型。它将服务器端视为一个相当愚蠢的基于REST的持久性引擎。

这似乎是一种简单化的观点。我敢肯定这不是整个故事。

集成这两个东西的真正机会是什么?这样做有意义吗?或者它们之间有太多的重叠,这就没有意义了?

我喜欢看到一些分析或讨论这一点,如果有人可以推荐我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-10 18:13:52

虽然我不能与backbone.js交谈,但我可以告诉你,我已经使用knockout与ASP.NET MVC相结合,取得了很好的效果。到目前为止,我见过的每个ASP.NET应用程序都混合使用客户端和服务器端视图生成。总会有一些时候,在服务器端生成视图更方便。例如,条件UI元素基于用户是否经过身份验证,或者它们是否具有特定的权限。您可能不希望精通web的用户能够浏览您的客户端模板,并找出他们没有得到的所有功能。当然,你可以通过异步加载不同的客户端模板来解决这个问题,或者最终编写服务器端代码来生成客户端模板……此外,如果SEO对你有任何意义,你就可以和客户端模板(本身)说再见了。

因此,在我看来,最好的地方是两者都做得很好。根据我的经验,我发现ASP.NET MVC在这两个方面都做得很好。

为什么ASP.NET MVC很棒

(MasterPages)

  • Razor goodness)

  • ActionFilters布局(MasterPages)

  • Razor(带有intellisense goodness)

  • ActionFilters的类型安全视图(适用于日志记录、身份验证等约定的绝佳位置)免费的

  • JSON序列化- validation

  • IoC和MVC是最好的朋友(win)

  • Authentication + authorization

  • Lots以及其他我想不到的东西。

通过使用客户端框架来生成视图,您所遗漏的实际上就是Razor。您甚至可以在某种程度上利用布局。

我使用ASP.NET MVC进行开发的方法是从让应用程序在服务器端工作开始。这迫使你思考你想要你的URL结构,什么值得一个控制器,你的路由应该是什么。这也意味着您可以在视图的第一次迭代中获得类型安全和自动完成的好处。在本练习结束时,您已经得到了一个简单的、符合标准的解决方案(希望),它可以在任何已知的设备上工作,而Google对此永远不会感到满足。

然后,我开始采用增量方法来实现客户端功能的切片。在客户端,我编写了一些javascript来劫持我想要转换为AJAX请求的请求,并使用Razor视图的翻译版本来处理响应。在服务器端,我采用了一种使用操作过滤器的基于约定的方法。此操作筛选器大致执行以下操作:

  • Is ActionResult a ViewResult?
    • 什么是接受类型?
      • HTML -在给定相同型号的情况下返回前缀为"_“的同名PartialViewResult
      • JSON-返回给定相同the的JsonResult

the

  • Is ActionResult a RedirectToRoute result?
    • Return EmptyResult (或者您也可以在URL中返回URL

使用这种方法,您可以添加AJAX功能,而无需更改控制器中的任何代码行。另一种方法是遵循Thunderdome Principal,并让ActionInvoker负责根据请求上下文将模型包装在适当的结果类型中。不过,我还没有弄清楚服务器端导航(重定向)如何适应这种方法。

从服务器端实现开始的浪费是视图生成代码(Razor +基于js的模板)的两倍。这取决于您希望在客户端实现多少应用程序,这可能是问题,也可能不是问题。Spark是个例外,因为你实际上可以把它放到generate client templates上!Spark的缺点是你失去了intellisense (它有一个插件,但它是垃圾),这不是一个微不足道的损失,加上我只是更喜欢Razor (它是内置的,不需要配置,不会很快消失)。

票数 58
EN

Stack Overflow用户

发布于 2013-12-15 00:49:38

我在不同的项目中使用过asp.net、mvc、KO和bakcbone,最后都归结为项目的本质。一旦你的工作流开始变得复杂,或者你要提供UX,而不是简单的以数据为中心的应用程序,服务器堆栈就不会开箱即用。当你的项目涉及到很好的用户体验时,backbonejs可以帮你实现目标。缺点是,没有明确定义的集中化指导方针,您将不得不经历地狱的博客来完成事情。对于传统的应用程序,你可以坚持使用KO。顺便说一句,有一些插件可以模拟backbonejs的KO。我又提到了bacjbone.modelbinder,你需要自己集成,因为MS根本不会麻烦的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7694161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档