Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为什么在Rails中使用Backbone.js?_Jquery_Ruby On Rails_Ajax_Backbone.js - Fatal编程技术网

Jquery 为什么在Rails中使用Backbone.js?

Jquery 为什么在Rails中使用Backbone.js?,jquery,ruby-on-rails,ajax,backbone.js,Jquery,Ruby On Rails,Ajax,Backbone.js,Rails可以通过js文件和js.erb文件更新其表示层,使用诸如Backbone.js之类的框架有哪些具体好处?以下是几个原因: 1)主干网是专门为Rails而构建的,并且在Rails的帮助下可以轻松集成。虽然模型-视图-模型(MVVM)模式(Knockout和Angular)可以很容易地以不引人注目的方式合并到Rails应用程序中,但是主干网的MVC架构提供了一种组织级别,如果应用程序有大量异步页面更新,这似乎是非常必要的。以这个堆栈溢出页面为例: 如果您在Rails中构建这个问题视图,那么

Rails可以通过js文件和js.erb文件更新其表示层,使用诸如Backbone.js之类的框架有哪些具体好处?

以下是几个原因:

1)主干网是专门为Rails而构建的,并且在Rails的帮助下可以轻松集成。虽然模型-视图-模型(MVVM)模式(Knockout和Angular)可以很容易地以不引人注目的方式合并到Rails应用程序中,但是主干网的MVC架构提供了一种组织级别,如果应用程序有大量异步页面更新,这似乎是非常必要的。以这个堆栈溢出页面为例:

如果您在Rails中构建这个问题视图,那么您的问题show.html.erb、问题_show.js、show.js.erb以及所有其他与异步更新此页面上的内容相关的js.erb文件(如上/下投票、偏好、评论等操作)

在主干网中,视图不像show.html.erb那样是标记模板,而是在一个点中包含该标记资源的所有相关代码。因此,与在一个远程的question_show.js文件中定义所有事件侦听器并在各种js.erb文件中处理所有AJAX更新不同,所有与questions show资源相关的事件侦听和发布都包含在一个位置,即主干问题显示视图中。诚然,评论可以有自己的观点,评论可以有自己的收藏,还有我没有提到的其他MVC元素。但关键是,主干网可以帮助您定义前端资源

2)选择像主干网这样的JavaScript框架有助于减轻服务器上的一些负担,因为这些代码实际上不需要在服务器端执行。既然可以在客户端浏览器中完成,为什么要在服务器上以html.erb模板呈现所有标记元素呢。为了回答安全性问题,在将数据库对象格式化为JSON并将其发送到客户端时,您可以将数据库对象属性设置为白名单/黑名单

3)主干网(特别是主干网)似乎给人很大的自由度。它提供了一组约定来帮助组织您的应用程序,但归根结底,您要开发的是您的框架。主干的MVC框架不像Rails那样是单向的,但坚实的约定仍然存在

4)通过主干(不支持或反对其他框架),pushState可以轻松地实现到预期其用例的框架中。但是,pushState在爬虫程序访问您的内容方面有其缺点,需要以爬虫程序友好的方式合并一些服务器端呈现。不过,最棒的是,您可以在开箱即用的情况下获得相同的历史/可降解性;他们的url片段也支持同样的功能,只是有一个额外的#

使用主干这样的框架还有很多其他原因,而且似乎有很多替代方案,因为一个框架并不适合所有框架。但我可以证明,如果你从头开始构建应用程序,主干网似乎是一个很棒的框架。如果您想将它合并到现有的应用程序中,它看起来也是非常可行的


来源:

如果你决定和ReBoo.js一起使用,这里有一些在Rails中使用的东西要考虑:所以我想这意味着在某些领域里,我想使用很多的JavaScript和动态事件来使用骨干网?(我猜还有更多的原因)