我已经开始从Rails 4开始。
在处理JSON格式数据时,我发现我们可以使用rails/jbuilder并运行良好。
然而,当我学习语码学校Rails 4模式时,他们提到了名为active_model_serializers的创业板。
对于active_model_serializers gem,JSON序列化的所有逻辑都进入模型(这被认为是最佳实践)。
而对于jbuilder gem,我们需要编写扩展名为.json.jbuilder的单独视图文件。
我的问题是:
发布于 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
https://stackoverflow.com/questions/26097563
复制相似问题