Rails [调查] Angularjs 与 Rails 的整合的相关 Gem 大家都用哪些? 感觉有哪些不满的?

lyfi2003 · 2014年10月10日 · 最后由 lyfi2003 回复于 2014年10月11日 · 5534 次阅读

准备写一个与 Angularjs 相关的的 Rails Gem 包,来让 Rails 下的 Angularjs 开发更爽。

所以想问问大家对目前的 Angularjs 相关的 Gem 有用过哪些?有哪些不满?

为什么要写一个 Angularjs 相关的 Rails Gem

我一直用 angularjs-rails 这个 Gem 来开发 Angularjs 类应用,只能说是刚刚够用。很多东西需要从零开始:

  • 目录结构脚手架
  • 没有集成测试框架
  • 有很多小坑需要注意,最好形成一个最佳实践来简化。

所以,想进一步提高 Rails 对于复杂前端的适用范围,让 Rails 开发更爽一点。

调查目的

想了解大家对 angularjs 使用过相关 Gem 的感受,增加一些更 cool 的需求点,让 Rails 开发更爽一点。

如果要用到 Angular/Ember 这种量级的框架,我就不选择整合进 Rails 了,而是直接分离,这样最爽。 不过最近有一个新出的东西,好像叫 Webpack 吧如果没记错的话,挺酷的,貌似可以让整合变得很爽。

@nightire 你说的分离是指怎么分离?代码直接分离成两个项目还是?

我个人的意思是,从前后端上逻辑是分离的,但利用 Rails 的 Asset Pipe 来进行打包,Webpack 我粗看了一下,跟 Asset Pipe 打包功能上是重合的。在依赖处理上跟 Angularjs 是重合的。

直接

source 'https://rails-assets.org'

gem 'rails-assets-angular'
gem 'rails-assets-angular-animate'
gem 'rails-assets-angular-bindonce'
gem 'rails-assets-angular-cookies'
gem 'rails-assets-angular-faye'
gem 'rails-assets-angular-i18n'
gem 'rails-assets-angular-loading-bar'
gem 'rails-assets-angular-mocks'
gem 'rails-assets-angular-mousewheel'
gem 'rails-assets-angular-resource'
gem 'rails-assets-angular-route'
gem 'rails-assets-angular-sanitize'
gem 'rails-assets-angular-touch'

generator 一开始自己写,最近也不怎么用了,反正前端代码越少越好

测试用teaspoon

CSRF 替换为 angular 的方式

class ApplicationController < ActionController::Base
  after_action :set_csrf_cookie_for_ng

  def set_csrf_cookie_for_ng
    cookies['XSRF-TOKEN'] = form_authenticity_token
  end

  def verified_request?
    request.headers['X-CSRF-Token'] = request.headers['X-XSRF-TOKEN']
    super
  end

然后好像没啥坑了吧,想不起来了

赞成分开来写,新建一个 ngapp 的文件夹管理 angular 项目,用 pipline 打包。

#3 楼 @comensontin 这样是可以的,就是对新开的项目不够友好,需要自己去定制一些标准。

#5 楼 @nightire OK, 明白你的意思。这确实是一个大型项目的趋势,让各自的人员更专注自己的工作。不过我想,还有更多小型一些的项目,采用 Angularjs + Rails 仍然是一个不错的选择。这时,能更快速构建基本的模块还是蛮有意义的。这是我的思路。

在我看来,一些时候,代码的组织是一个逐渐演化的过程。我的做法一般是 ngapp->rails engines->separately frontend package,在前两个阶段,grunt,bower 和 nodejs 可以被嵌入到 rails 项目,并独立测试。但最后,还是要分开的。

可以用 Yeoman 单独开发前段代码,Rails 只只负责开发 API。到最后用 Yeoman 来打包前段代码,并把相应的打包好的代码,包括 index.html, application.js, application.css 作为静态文件直接放到 rails 项目中的 public 目录下,让 web 服务器直接处理

#5 楼 @nightire +1 我们之前的项目,现在的新项目,都是前后端完全分离成独立的 project 来做 硬要融合进 rails 反而会带会额外的问题 yeoman 的 npm + bower + grunt 的组合非常强劲给力

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