Javascript, содержащий состояние страницы - лучшие практики? - PullRequest
0 голосов
/ 02 ноября 2011

Я в процессе создания прототипа веб-приложения с использованием ruby ​​на рельсах.

Я - новичок в рельсах, но этот вопрос относится к программированию MVC в целом.

ВВ прошлом, когда моя модель содержала некоторую релевантную информацию, которая должна была быть доступна из моих файлов javascript, у меня был некоторый встроенный javascript в моем шаблоне и дамп его в глобальную переменную таким образом:

<script type="text/javascript"> 
    var nodes=<%= @nodes.to_json.html_safe %>;
</script>

Однако вЯ планирую использовать uglifier для сжатия моих файлов javascript, я предполагаю, что он не будет знать, как переименовать переменную node в моих файлах erb, чтобы синхронизировать с уменьшенным javascript.

(я думаю,хранение его в именованном скрытом вводе может обойти проблему минимизации, но выглядит еще более хакерской ...)

Поэтому мой вопрос:

Можете ли вы предложить более изящные альтернативы хранению состояния страницычем сбрасывать объекты json в глобальное пространство имен?

Желательно в рельсах, но мне также интересно посмотреть, как люди решают проблемы.его проблема в других рамках MVC ...

Спасибо

1 Ответ

2 голосов
/ 03 ноября 2011

Встроенный JavaScript ужасен. Это удваивается, когда вы создаете значения JS в виде строк. Это создает проблемы с ремонтопригодностью и должно быть навсегда изгнано из вашей хитрости. JavaScript принадлежит внешним файлам JavaScript, и эти файлы должны быть статическими.

Вместо этого вы хотите что-то вроде:

(просмотреть файл)

<div id="nodes"><%= @nodes.to_json %></div>

(CSS)

#nodes { display: none; }

(JavaScript)

var nodes = JSON.parse($('#nodes'))

Это верно независимо от вашего языка на стороне сервера.

Бонус-специфичные для Rails советы: используйте Haml вместо ERb и Sass вместо CSS. Гораздо приятнее.

...