这取决于你的喜好和需要.
如果你正在与余烬合作.js前端,从余烬开始我倾向于active_model_serializers
.js基本上是精心设计的,可以很好地使用它(Yehuda Katz是active_model_serializers
的维护者之一,不久前是Ember.js的核心团队;he gave a talk的主题).
快速细分:
Active Model Serializers
将序列化问题分离到自己的文件夹/app/serializers
中,并附带自己的Rails生成器,其行为更像ActiveRecord,因为您可以在序列化程序中定义关联.然后,它会根据其固执己见的惯例(例如,骆驼壳、侧装关联等)自动做正确的事情.瑞安·贝茨(Ryan Bates)有一集关于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 Bates)在拉布尔(Rabl)也做了一个铁路司机:http://railscasts.com/episodes/322-rabl.在概念上,它比AMS更接近Jbuilder.而且它的存在时间也更长.就我个人而言,我不太喜欢它的语法.但这是意见的问题.
如果我不是在余烬上工作.js项目,我会 Select Jbuider,因为它的简单性和更容易理解的概念.
至于性能,至少有一位用户声称,您可以使Jbuilder比Rabl和AMS快得多:https://medium.com/@lgmspb/how-we-increased-the-speed-of-json-generation-by-3000-times-ca9395ab7337
Follow up (01/22/2015): Leigh Halliday写了一个不错的速成班,比较了一些Ruby .除了这里提到的选项之外,本文还介绍了其他几个选项.