瞎扯淡 Angular.js 与 Rails 如何搭配比较合理呢

jicheng1014 · 2015年04月03日 · 最后由 miclle 回复于 2015年04月03日 · 2341 次阅读

angular 现在在整个生态圈吹的都挺火,小弟也试着拿它做点小demo ruby-china 里也有很多朋友做这块,也有一些开源的产品比如“创业赢”之类的紧紧贴着angularjs 但是有一点我觉得开发的时候是不是会有些别扭, angularjs 在我感觉中也是一个非常“全面”的框架,自己管理路由,自己管理压缩,自己做view,经常配合gruntjs 来使用 rails也是一个非常全面的框架,也自己管理路由,自己管理assets, 两个框架在一起,经常打架的样子(turbolinks) 我知道也有angularjs-rails 等gem 来解决类似的事情 但是等到部署要压缩,concat js 的操作之后,又会遇到各种奇怪的问题

最让我觉得难受的是, 写代码的时候经常就会在脑袋里蹦出这种问题:觉得这个是rails 本身就可以处理的,但是似乎交给angularjs 处理也行?哎,放到angular里又增加了一大堆代码耶?算了我还是交给rails view 来做吧。

所以我觉得是不是直接让前端干干净净一个angularjs + gruntjs 项目好了,rails 则只负责REST API 的工作? 但是这种又觉得委屈了rails,偌大的一个ror,只做了一点点事 ,而且rails 单纯做REST API 效果我觉得甚至没有微软的服务 asmx + wsdl 来的方便大家使用。

当然Rest 也可以用一些gem 比如grape 前几天看社区还有高人开发了个自动生成api说明的gem,还蛮有意思的。

不知道各位朋友在开发angular 项目的时候是怎么处理rails 和 angular 的关系的。或者说,到底什么时候用angular 处理,什么时候用rails 处理? 评判的标准是什么? 还请各位高手赐教

共收到 7 条回复

rails只做api

rm -rf app/views
rm -rf app/assets
rm -rf verdor

# remove gem in Gemfile, 只剩下了
gem 'rails', '4.2.0'
gem 'mysql2'

# application.rb
# require 'rails/all'
# gem which rails/all
require 'active_record/railtie'
require 'action_controller/railtie'
# require 'action_view/railtie'
require 'action_mailer/railtie'
# require 'active_job/railtie'
require 'rails/test_unit/railtie'
# require 'sprockets/railtie'

# remove none useful middleware
config.middleware.delete ActionDispatch::Flash
config.middleware.delete Rack::Sendfile
config.middleware.delete ActionDispatch::Cookies
config.middleware.delete ActionDispatch::Session::CookieStore

    config.generators do |g|
      g.orm             :active_record
      g.template_engine :erb
      # g.test_framework  :test_unit, fixture: false
      # g.test_framework  nil
      g.stylesheets     false
      g.javascripts     false
      g.jbuilder        false
      g.helper          false
    end

#1楼 @flowerwrong json 也是 view 啊。

#2楼 @Rei 我没用 jbuilder , 你是觉得哪里有问题?

#3楼 @flowerwrong 你是怎么输出 json 的?

#4楼 @Rei render json: { status: 'success', data: { posts: @posts, total_count: Post.all.count }, msg: 'balabala' }, status: :ok

#5楼 @flowerwrong 不用jbuilder 的话每次传数据的时候都要敲这些 感觉略奇怪

前后端完全分离成两个项目 api: gem 'rails-api' gem 'rack-cors' gem 'jbuilder'

前端用 grunt 或 gulp

如果只是纯粹的做个小demo演示什么的,后端直接可以用 leancloud, firebase 这种服务

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册