将Ruby on Rails与AngularJS集成的最简洁方法是什么?

时间:2015-12-23 22:50:07

标签: ruby-on-rails angularjs asset-pipeline assets directory-structure

我正在创建一个Ruby on Rails应用程序,我想在前端使用AngularJS。 我打算使用以下文件结构(来自here)作为前端:

angularapp/
----- shared/       // acts as reusable components or partials of our site
---------- sidebar/
--------------- sidebarDirective.js
--------------- sidebarView.html
---------- article/
--------------- articleDirective.js
--------------- articleView.html
----- components/   // each component is treated as a mini Angular app
---------- home/
--------------- homeController.js
--------------- homeService.js
--------------- homeView.html
---------- blog/
--------------- blogController.js
--------------- blogService.js
--------------- blogView.html
----- app.module.js
----- app.routes.js

我有三个主要问题:

1 - 我希望我的整个角度应用程序能够通过Ruby on Rails的资产流水线功能

2 - 我不想打破我的角度应用程序的结构并将其文件移动到相应的Rails资产文件夹。

3 - 我不想将我的角度应用程序放在assets / javascripts文件夹下,因为它不仅包含javascript文件。

将此结构与Ruby on Rails应用程序集成的最简洁方法是什么?

2 个答案:

答案 0 :(得分:5)

我做了一些研究。事实证明,将AngularJS与Ruby on Rails集成的最简洁方法是将它们集成到一个Ruby on Rails应用程序的上下文中。相反,最好将它们完全分开,就像@Minhail建议的那样。

正如布拉德卡尔顿在this article中建议的那样:

  

将整个项目整齐地塞进其中一个项目的一个缺点   今天的怪物框架,如Rails,Django或MVC,就是它可以   前端开发人员很难从事该项目。

     

虽然经验丰富的Ruby dev可能很容易设置rvm,gem   安装所有ruby依赖项,处理本机扩展和   跨平台问题。这些东西可能不是你的   前端开发人员最适合。

后来在文章中他建议更好的架构是保持前端和后端完全分离:

  

它还促进使前端成为真正的一流应用程序   并确保它真正健壮。希望是前端   现在鼓励开发人员为不可避免的情况编写代码   后端发生故障。

     

更好的用户体验是,“嘿,我们遇到了一些问题   现在使用服务器,稍后再试“甚至更好”搜索   服务似乎目前有问题,但你仍然可以   查看您的个人资料和当前项目。“

根据另一篇文章here,单页应用程序和Api驱动开发是2015年的两个Web开发趋势。我认为这是一个事实,它强烈鼓励前端和后端分离的想法。

这是一个很好的例子,一步一步的演练:

A Complete RESTful Rails-api

An AngularJS Front-End For The Api Above

答案 1 :(得分:1)

我使用AngularJS有一个Ruby on Rails应用程序。我也使用了功能结构,我的所有文件都在/assets/javascript/中。您应该在/config/environments/production.rb中添加所有js和css文件以预编译它们以进行生产。 production.rb的示例:

config.assets.precompile += %w{
  topbar/topbar-controller.js
  topbar/topbar-service.js
  topbar/topbar-directives.js
  topbar/topbar.css
  # ... other features
}