Может ли файл javascript быть динамическим (разным для каждого клиента при загрузке)?Как? - PullRequest
0 голосов
/ 16 февраля 2012

У каждого клиента на сайте свой состав HTML элементов. Некоторые из них могут иметь 3 элемента, в то время как другие могут иметь 123. Сходство между элементами мало, если вообще есть. И каждый элемент требует определенного кода для управления различными элементами. Фактически каждому клиенту может потребоваться отдельный файл JavaScript после каждого поиска или действия на сайте.

Итак, как сервер может предоставлять индивидуальные файлы Javascript на лету для каждого сеанса?

Я использую python / cherrypy / mako на стороне сервера ...

ТИА

Dennis

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

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

Учитывая все это, генерируется динамический JavaScriptмало или не отличается от генерации динамического HTML.У вас есть файл шаблона, содержащий скелет JavaScript и теги разметки, представляющие области, в которых находятся динамические части.Затем вам нужно иметь обработчик URL, который может отвечать на запросы к файлу.Обычно файлы JavaScript обрабатываются как другие статические файлы, такие как изображения или CSS, но вы будете рассматривать их как обработчик для динамического файла HTML.

Созданный вами HTML-файл должен включать URL-адрес дляваш сгенерированный файл JS.Допустим, например, что вы отключаете целочисленный идентификатор пользователя.URL для вашей главной страницы может выглядеть примерно так: http://myapp.com/home/11234, где 11234 - это идентификатор конкретного пользователя.Внутри шаблона для этой страницы у вас должен быть тег script, имеющий ссылку, указывающую на URL динамически генерируемого файла JavaScript, что-то вроде http://myapp.com/js/11234.

Наконец,URL-адрес динамического файла JavaScript должен содержать компонент Id, который обработчик может использовать для загрузки любых данных, необходимых для придания файлу специфичности для данного пользователя.

Опять же, я не рекомендую этот метод.

1 голос
/ 17 февраля 2012

Насколько я понимаю, процесс генерации файлов HTML и JS достаточно важен, чтобы они оба генерировались одновременно. И восстановление файла JS после отправки файла HTML может быть проблематичным.

В этом случае вы всегда можете кэшировать файл JS, сгенерировать для него токен и повторно извлечь его из файла HTML?

<html>
<head>
  <script type="text/javascript" charset="utf-8" src="/fetch/my/${token}">
</head>
...

Это создаст второй запрос к серверу, и вы можете заставить CherryPy (извините, не знаком с ним) вызвать процесс и просто вернуть содержимое $ {token} с правильными заголовками http ... и удалить файл с диска.

Является ли это жизнеспособным решением вместо восстановления JS, предложенного @Adam Crossland.

1 голос
/ 16 февраля 2012

Используйте несколько файлов JavaScript и просто включите те, которые вам нужны ..

Если вам действительно нужен каждый файл JavaScript для динамической генерации, взгляните на встроенный JavaScript :

<html>
<head>
    <script>
        some_client_specific_code();
    </script>
</head>
...
...