首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Rails 4中JSON处理的jbuilder与Rails-api/active_model_序列化器

用于Rails 4中JSON处理的jbuilder与Rails-api/active_model_序列化器
EN

Stack Overflow用户
提问于 2014-09-29 10:18:57
回答 1查看 12.9K关注 0票数 38

我已经开始从Rails 4开始。

在处理JSON格式数据时,我发现我们可以使用rails/jbuilder并运行良好。

然而,当我学习语码学校Rails 4模式时,他们提到了名为active_model_serializers的创业板。

对于active_model_serializers gem,JSON序列化的所有逻辑都进入模型(这被认为是最佳实践)。

而对于jbuilder gem,我们需要编写扩展名为.json.jbuilder的单独视图文件。

我的问题是:

  • 哪一个是JSON数据处理的理想选择
  • 两者之间的任何性能差异
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-24 23:57:13

这取决于你的喜好和需求。

如果您正在使用Ember.js前端,那么我倾向于使用active_model_serializers,因为Ember.js基本上是为了更好地使用它而构建的(Yehuda是active_model_serializers的维护人员之一,是Ember.js的核心团队之一;他做了个报告之前在这个主题上)。

快速分解:

活动模型序列化器

将序列化关注点分离到自己的文件夹/app/serializers中,带有自己的Rails生成器,它的行为更像ActiveRecord,因为您可以在序列化程序中定义关联。然后,它会自动做正确的事情,根据它的固执己见的惯例(如骆驼壳,侧面装载协会.等)。Ryan在RailsCast上有一集关于主题:http://railscasts.com/episodes/409-active-model-serializers的精彩节目。

Jbuilder

Jbuilder采用了几乎相反的方法,因为它认为JSON格式构造只是另一个Rails视图。您可以像使用视图模板一样在相应的/app/views/目录中构建响应。它可以具有视图模板的许多特性,比如理解current_user是什么,开箱即用(这并不是直接使用AMS),链接关系(@user.posts).当然,赖安·贝茨也在这个问题上做了一个RailsCast:http://railscasts.com/episodes/320-jbuilder

Alternative: Rabl

Ryan (自然)也在Rabl上做了一个RailsCast:http://railscasts.com/episodes/322-rabl。在概念上,它更接近于Jbuilder,而不是AMS。它的存在时间也更长了。就我个人而言,我不太喜欢它的语法。但这是个意见问题。

如果我不从事Ember.js项目,我会使用Jbuider的简单性和更平易近人的概念。

在性能方面,至少有一个用户声称您可以比Rabl和AMS:https://medium.com/@lgmspb/how-we-increased-the-speed-of-json-generation-by-3000-times-ca9395ab7337更快地制作Jbuilder。

后续行动(01/22/2015): Leigh Halliday写了一篇很好的速成班,比较了一些宝石。除了这里提到的选项之外,本文还介绍了更多的备选方案。https://www.leighhalliday.com/responding-with-json-in-rails

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

https://stackoverflow.com/questions/26097563

复制
相关文章

相似问题

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