我正在创建一个RubyonRails应用程序,我想在前端使用AngularJS。我计划在前端使用以下文件结构(从这里开始):
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-我希望我的整个angular应用程序能够通过RubyonRails 的资产管道功能
2-我不想破坏我的angular应用程序的结构,并将其文件移动到相应的Rails资产文件夹中。
3-我不想把我的angular应用程序放在assets/javascripts文件夹下,因为它不仅仅由javascript文件组成。
将这个结构与我的RubyonRails应用程序集成在一起最干净的方法是什么?
我做了一些研究。事实证明,将AngularJS与RubyonRails集成的最干净的方法是实际上不将它们集成在一个RubyonRails应用程序的上下文中。相反,最好像@Minhail建议的那样,让他们完全分开。
正如Brad Carlton在本文中所建议的:
把你的整个项目整齐地塞进一个今天像Rails、Django或MVC这样的怪物框架,它可以对于一个前端开发人员来说,处理这个项目是非常困难的。
虽然经验丰富的Ruby开发人员设置rvm可能很简单,但gem安装所有ruby依赖项,处理本机扩展和跨平台问题。这些东西可能不是你的前端开发人员最适合。
在文章的后面,他建议更好的体系结构是将前端和后端完全分离:
它还促进使前端成为真正的一流应用程序并确保其真正强健。希望前端现在鼓励开发人员为不可避免的场景编写代码后端出现故障。
说"嘿,我们遇到了一些问题现在使用服务器,稍后再试"甚至更好"搜索服务目前似乎有问题,但您仍然可以查看您的个人资料和当前项目。"
根据这里的另一篇文章,单页应用程序和Api驱动的开发是2015年的两个web开发趋势。我认为这一事实有力地鼓励了前端和后端分离的想法。
逐步演练的一个很好的例子:
一个完整的RESTful Rails api
上面Api的AngularJS前端
我有一个使用AngularJS的RubyonRails应用程序。我也使用特征结构,我所有的文件都在/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
}