【问题标题】:Best place to store angular files in rails在rails中存储角度文件的最佳位置
【发布时间】:2016-01-09 11:44:30
【问题描述】:

我打算将我当前的应用程序转换为 Angular 应用程序。我以前从来没有机会使用 angular 和 rails 一起工作。我计划在 Rails 应用程序中逐个功能地实现 Angular。但我仍然关心文件夹结构。

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

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

【问题讨论】:

    标签: javascript ruby-on-rails angularjs


    【解决方案1】:

    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']);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      相关资源
      最近更新 更多