brg*_*brg 35 ruby ruby-on-rails jbuilder active-model-serializers ruby-on-rails-4
我已经开始了Rails 4.
在处理JSON格式数据时,我发现我们可以使用rails/jbuilder并且运行良好.
但是,当我拿着Codeschool的Rails 4 Pattern时,他们提到了gem active_model_serializers.
对于active_model_serializersgem而言,所有JSON序列化逻辑都会进入Model(被认为是最佳实践).
而对于jbuildergem,我们需要编写带扩展名的单独视图文件.json.jbuilder.
我的问题是:
pow*_*tom 54
这取决于您的偏好和需求.
如果你正在使用Ember.js前端,我会倾向于active_model_serializersEmber.js基本上是精心设计的(Yehuda Katz是active_model_serializersEmber.js的核心团队之一; 他是前一段时间就这个话题发表了演讲.
主动模型序列化器
将序列化问题分离到自己的文件夹中/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)......等等.当然,Ryan Bates也做了关于这个主题的RailsCast:http://railscasts.com/episodes/320-jbuilder
替代方案:Rabl
Ryan Bates(自然)也在Rabl上制作了一个RailsCast:http://railscasts.com/episodes/322-rabl .从概念上讲,它比AMS更接近Jbuilder.而且它也存在更长时间.就个人而言,我不太喜欢它的语法.但这是一个意见问题.
如果我没有参与Ember.js项目的工作,我会选择Jbuider,因为它的简单性和更平易近人的概念.
至于性能,至少有一个用户声称你可以比Rabl和AMS更快地制作Jbuilder:https://medium.com/@lgmspb/how-we-increased-the-speed-of-json-generation-通过-3000倍,ca9395ab7337
跟进(2015年1月22日): Leigh Halliday写了一篇很好的速成课程,比较了一些宝石.除了这里提到的那些之外,本文还介绍了另外几种替代方案. http://www.leighhalliday.com/posts/responding-with-json-in-rails
| 归档时间: |
|
| 查看次数: |
9369 次 |
| 最近记录: |