Прошло много времени с тех пор, как я опубликовал эту проблему. То, что я делал, чтобы решить это:
- напишите нужные вам части javascript в виде библиотеки, которая обслуживается статически
- вызов подпрограмм в статической библиотеке из шаблона со значениями на стороне вашего сервера
Ограничение требуется, чтобы написать его таким образом, чтобы он действовал только как сценарий на стороне клиента; не поддавайтесь соблазну попробовать ввести значения с сервера во время обслуживания js. В конечном счете я нашел менее запутанным применение переменных на стороне сервера строго в html-шаблоне.
Таким образом, я могу:
- сохранить селекторы javascript на тегах html внутри одного и того же файла (т. Е. Шаблона)
- полностью избегать тегов-шаблонов
- повторно использовать каждую библиотеку javascript в разных местах и
- хранить фрагменты css / js / html во всех местах, где они могут быть найдены
Это не идеально, но оно заставляет меня ждать, пока не придет более аккуратная идея.
Например, библиотека js в «media / js / alertlib.js» может содержать:
function click_alert(selector, msg){
$(selector).click(function(){ alert(msg) })
}
и шаблон имеет:
<script type="text/javascript" src="media/js/alertlib.js"></script>
<script type="text/javascript">
click_alert('#clickme', {% message %})
</script>
<div id='clickme'>Click Me</div>