繁体   English   中英

在Rails中存储角度文件的最佳位置

[英]Best place to store angular files in rails

我打算将当前的应用程序转换为角度应用程序。 以前,我从来没有机会使用角度和导轨。 我正计划在Rails应用程序功能中逐个实现角度。 但是我仍然担心文件夹的结构。

关于将角度文件保存在rails应用程序中的位置是否有约定?

棱角型也适合这种开发(逐个功能)还是我应该研究其他技术?

FDD(通过功能开发获得的功能)在MVC框架中运行良好,而Angular就是其中之一。

通常建议将JS文件(任何JS文件,而不仅仅是Angular)存储在app/assets/javascripts以便Rails资产管道自动将它们拾取。 除此之外,没有约定,将它们存储在您认为合适的任何结构中。

我之所以这么说,是因为如果Angular代码变大,最好将其从app文件夹中提取出来。 然后,您将必须配置资产管道以使用新结构。

对于小型项目,我喜欢将Angular javascript文件保存在app/assets/javascripts/angular

app/assets/javascripts/angular
    /controllers/
    /directives/
    /helpers/
    /models/
    /services/
    apps.js
    templates.js.erb

视图在app/assets/templates

我遇到的一大障碍是使Angular视图与Rails的资产管道一起使用。 开发中,您什么都没注意到,但是一旦在生产环境中进行部署,并且启动了资产管道,Angular就无法再找到视图了。

为了使资产管道能够服务于AngularJS视图,我必须创建一个模板缓存。

// templates.js.erb
(function(){
    'use strict';

    // version 0.01
    // increase this every-time you deploy to production

    angular.module('templates', []).run(['$templateCache', function($templateCache) {
        <%
          environment.context_class.instance_eval { include ActionView::Helpers::JavaScriptHelper }
          app_root  = File.expand_path('../../../', __FILE__)
          templates = File.join(app_root, %w{templates ** *.html})

          Dir.glob(templates).each do |f|
            key  = f.gsub(%r(^#{app_root}/templates/), '')
            html = File.read(f).squish
        %>
        $templateCache.put("<%= key %>", "<%= escape_javascript(html) %>");
        <% end %>
    }]);
}());

然后,您必须在模块中注入templates

angular.module("myModule", ['templates']);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM