У меня ужасный кусок кода JQuery в одном из моих взглядов Rails, что прослушивает событие, которое выглядит примерно так:Javascript: рефакторинг в рамках
<% user_request_file = params[:file] == document.id.to_s %>
<% if user_request_file %>
<script type="text/javascript">
$(document).ready(function() {
$("#generate_file_btn_for_<%= document.id %>").attr('disabled', 'disabled').attr("href", "#").attr('title', 'Loading file...');
var doc_modal_<%= document.id %> = setInterval(function() {
$.getJSON("<%= file_xhr_document_path(document) %>", function(file) {
if (file.file_generated) {
$("#loading_for_<%= document.id %>").fadeOut("slow");
$('#document_file_modal_<%= document.id %>').modal('show');
$("#file_url_download_link_<%= document.id %>").attr("href", file.file_url);
clearInterval(doc_modal_<%= document.id %>);
} else if (file.file_error != null) {
window.location.href = "<%= file_error_document_path(document) %>";
}
});
}, 2000);
});
</script>
<% end %>
Я хочу, чтобы заменить его чем-то большем модульный и рефакторинг. Приведенный выше код прослушивает запрос, отправленный на его сервер каждые две секунды, и если он был отправлен, представление отвечает информацией из этого запроса.
Flight был рекомендован мне в качестве подходящей рамки замены, но я действительно не уверен, как начать рефакторинг. Любые советы или даже рекомендации других рамок были бы замечательными.
Первый шаг заключается в том, чтобы вытащить JavaScript из контекста замены шаблона/текста - это в равной степени равносильно переходу на Flight или KO или что-то еще - чтобы его можно было рассматривать как собственный/автономный модуль. Хотя в другой среде я предоставил [пример здесь] (http://stackoverflow.com/questions/25816881/how-to-avoid-writing-messy-javascript-in-an-asp-net-code- за/25817418 # 25817418). Дело в том, что JavaScript изолирован за соответствующим API и предоставляется. – user2864740