2016-01-09 2 views
1

Я планирую преобразовать свое текущее приложение в угловое приложение. Раньше у меня никогда не было возможности работать с угловыми вместе с рельсами. Я планирую реализовать угловую функцию функции рельсов по функциям. Но меня все еще беспокоит структура папок.Лучшее место для хранения угловых файлов в рельсах

Есть ли какое-либо соглашение о том, где хранить угловые файлы внутри рельсов?

Также является угловым хорошим кандидатом на этот вид развития (функция по признаку) или я должен изучить другие технологии?

ответ

1

FDD (функция по разработке функций) хорошо работает с фреймворками MVC, а угловой - один из них.

Обычно рекомендуется хранить файлы JS (любые файлы JS, а не только угловые) в app/assets/javascripts, чтобы конвейер Rails автоматически подбирал их. Помимо этого нет конвенции, храните их в любой структуре, которая имеет смысл для вас.

Я говорю вообще, потому что, если ваш угловой код становится большим, вам может быть лучше извлечь его из папки app. Затем вам нужно настроить конвейер активов для работы с вашей новой структурой.

Для небольших проектов, я хотел, чтобы мои угловые JavaScript файлы в app/assets/javascripts/angular

Взгляды идут в app/assets/templates.

Одно из препятствий, с которыми я столкнулся, заключалось в том, что Angular view работал с конвейером 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']); 
Смежные вопросы