не знаю, я бы написал
var html = "<div>Simple div</div>"; if(b) { html += "<div>Private div</div> } Ext.DomQuery.select("div#target")[0].innerHTML = html; а переменную b где-нибудь в страничку вставил (а скорее даже создал объект с какой-то информацией): User u = request.getSession().getParameter("user"); Boolean b = PermissionController.checkRights(u); response.write("<script>var b = \"<div>Simple div</div>\"</script>") по поводу безопасности - не знаю, может и повод, хотя сомнительный, имхо по поводу размера данных - зато эти скрипты закешируются, в противном случае они каждый раз будут генерироваться p.s. а вообще это похоже на преждевременную оптимизацию |
Не очень понял насчёт оптимизации.
По поводу кеширования вы правы, но кешировать я собираюсь на сервере, поэтому будет генерироваться не больше раза. |
Цитата:
Если .js и .css файлы статические, то они кешируются у клиента. Сайт работает заметно быстрей. |
Цитата:
|
Цитата:
<script type="text/javascript" src="base.ashx?admin=1&controlPanel=1"></script> И src всегда одинаков. В этом случае клиент действительно закеширует скрипт, и когда права поменяются скрипт будет подгружаться старый. Чтобы этого не происходило нужно добавлять random в src. Как для каптчи например: <div style="cursor: pointer;" onclick="$(this).previous().src = 'CaptchaImage.ashx?r=' + rand(9999);"> другой<br /> рисунок</div> Т. е. теперь скрипт !всегда! будет грузиться заново. А это совсем плохо. Что бы избавиться от random-а, и в тоже время подгружаемый скрипт поменялся при изменении прав, нужно генерировать src на основе данных из сессии пользователя. Т. е. возвращаемся к тому, что было предложено в постах 4 и 5. iDeadRat как раз от этого и хочет уйти. Я же думаю, что без серьезных минусов не получится. |
Если нужен кодоген, то самым простым способом будет представить яваскриптовое AST в Java (или что вы там используете?), которое затем и обрабатывать. Мы так делаем в XHB, только там генерится Хаскель.
Но то, что вы показываете в первом посте, можно замутить с помощью препроцессора Си :) или там m4 какого-нибудь. ЗЫ кодоген это хрупко, имхо |
Есть еще вариант: DSEC, смотрим ParenScript и ему подобное. :)
|
Riim, насчёт кеширования старой версии на клиенте я не подумал.
Правда явление смены прав, не так уж часто. Эту проблему я думаю мы будем решать путём введения версионности на клиенте(копать в сторону persist.js и похожих решений), либо грамотным выбором expires значений |
Артем Шалхаков, так и не нашёл про DSEC пока ничего...может расшифруете
|
Цитата:
Цитата:
p.s. повторюсь, имхо, лучше переписать скрипты, чтобы они работали со всеми группами пользователей на основе информации специфической для текущего пользователя. При этом не обязательно подгружать все скрипты/отображать все части страницы - можно только нужные Цитата:
|
Часовой пояс GMT +3, время: 11:20. |