Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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
Javascript 轨道和主干共同工作_Javascript_Ruby On Rails_Ruby_Model View Controller_Backbone.js - Fatal编程技术网

Javascript 轨道和主干共同工作

Javascript 轨道和主干共同工作,javascript,ruby-on-rails,ruby,model-view-controller,backbone.js,Javascript,Ruby On Rails,Ruby,Model View Controller,Backbone.js,我刚刚开始研究MVC结构,首先我研究了backbone.js是如何工作的,现在我刚刚完成了代码学校的课程。我知道我还没有深入研究这些,但我有一个问题要问 您能同时使用这些库吗? 我已经学会了如何在两者中创建模型,视图,但在创建真正的应用程序时,您是否同时使用主干和rails 如果是的话 什么时候使用backbone.js模型与rails模型相比? 也许我只是超越了自己,需要继续练习和做教程,但我似乎找不到任何直接关于这方面的东西 谢谢 是的,您可以同时使用这两个选项。主干用于在客户端浏览器中存储

我刚刚开始研究MVC结构,首先我研究了
backbone.js
是如何工作的,现在我刚刚完成了代码学校的课程。我知道我还没有深入研究这些,但我有一个问题要问

您能同时使用这些库吗?

我已经学会了如何在两者中创建
模型
视图
,但在创建真正的应用程序时,您是否同时使用主干和rails

如果是的话

什么时候使用
backbone.js
模型与
rails
模型相比?

也许我只是超越了自己,需要继续练习和做教程,但我似乎找不到任何直接关于这方面的东西


谢谢

是的,您可以同时使用这两个选项。主干用于在客户端浏览器中存储和操作数据。它通常需要一台服务器与之对话并从中获取数据。这就是Rails的用武之地。您可以拥有一个web应用程序,而不需要繁重的客户端代码。主干网是用来构建感觉更像应用程序的网站——想想Gmail或Pandora


我建议先学习Rails。一旦你可以按照自己的意愿加载静态页面并设置样式,那么了解主干网的位置将更有意义

我已经使用rails作为后端服务器来服务一个相当大的网站,其中包括一些单页应用程序(内置主干网)

我建议使用rails上的主干网。其想法是,rails服务器将在您的一个视图中作为脚本标记提供主干应用程序。您将主干应用程序本身保存在rails
app/assets
文件夹中

主干网了解rails路由约定,您只需要给它一个到json api的路径,rails几乎可以通过
rails生成资源
为您生成json api


除了模型之间的同步,您的主干应用程序和rails应用程序是相当独立的。主干网和Rails没有完全相同的MVC模型,但是让它们合作非常容易。

在做其他事情之前,我建议先看一下thoughtbot的书,这是一个很好的起点,尽管它面向的是中级到高级的读者。我买这本书之前已经使用过rails,但作为一个完全的backbone.js初学者,它对我很有帮助

除此之外,结合这些框架还有一些基本问题,这些问题超出了本书和其他书中所涵盖的细节。下面是一些我建议您考虑的事情,根据我自己的经验,将RoR与backbone.js配对。这是一个很长的答案,有点偏离了你问题的细节,但我希望它能帮助你从“大局”的角度理解你所面临的问题

Rails:Web框架与API 在rails应用程序上使用backbone.js时遇到的第一件事是如何处理视图,但这实际上只是一个更深层次问题的表面。问题在于创建RESTful web服务意味着什么

Rails是开箱即用的,它鼓励用户创建RESTful服务,通过标准HTTP操作,按照统一URI(在
routes.rb
文件中定义)访问的一组资源来构造路由。因此,如果您有
Post
模型,您可以:

  • 通过将
    Get
    请求发送到
    /posts
  • 通过向
    /posts/new
    发送
    GET
    请求,填写表单并将其(一个
    post
    请求)发送到
    /posts
  • 通过向
    /posts/123/edit
    发送
    GET
    请求,填写表单并将其(a
    PUT
    请求)发送到
    posts/123,更新id为
    123
    的帖子
  • 通过向
    /posts/123
    发送
    DELETE
    请求,销毁id为
    123
    的帖子
关于Rails的这一方面,需要记住的关键是它基本上是无状态的:不管我以前做了什么,我都可以创建一个新的
Post
,只需将带有有效表单数据的
Post
请求发送到正确的URI,比如
/posts
。当然还有一些警告:我可能需要登录(有一个会话cookie来识别我),但本质上Rails并不关心我在发送请求之前做了什么。我可以通过更新另一篇帖子,或者向任何其他资源发送有效的操作来跟进

Rails设计的这一方面使得将(Javascript轻量级)Rails web应用程序转换为API相对容易:资源将类似或相同,web框架返回HTML页面,而API(通常)返回JSON或XML格式的数据

Backbone.js:一个新的有状态层 主干网也基于RESTful资源。无论何时创建、更新或销毁backbone.js模型,都可以通过发送到URI的标准HTTP操作来执行,URI采用上述RESTful体系结构。这使得它非常适合与RESTful服务(如RoR)集成

但这里有一点需要强调:backbone.js作为API与Rails无缝集成。也就是说,如果去掉HTML视图,只使用Rails服务RESTful资源、与数据库集成、执行会话管理等,那么它将与backbone.js为客户端代码提供的结构很好地集成。很多人都这么认为,我认为他们在很多方面都是对的

复杂的问题是如何处理我们刚刚扔掉的Rails的另一部分:视图和它们所代表的内容

有状态的人,无状态的机器 这实际上比最初看起来更重要。HTML视图表示无状态接口