Динамическое изменение меньшего количества переменных в .net

проблема: я должен разрешить пользователям иметь разные цвета для кнопок, значков, цвета текста в соответствии с их предпочтениями с использованием спектра.js

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

@back-color: blue;
@font-color: red;

к разным значениям, и это должно быть сделано во время выполнения, а не во время компиляции. я знаю, что это будет стоить мне некоторой задержки, но я не знаю, как решить эту проблему по-другому.

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

<link href="~/Content/dynamic.css" rel="stylesheet" />

может кто-нибудь помочь мне или любое предложение по этому поводу ??

любая помощь будет оценена


person Salman    schedule 24.02.2015    source источник


Ответы (1)


Вариант 1 Реализуйте специальный обработчик для ресурса, который представляет CSS, настроенный пользователем. Этот обработчик должен:

  1. Сделайте поиск (по userId) в кеше, где хранится уже отрендеренное меньше (т.е. css);
  2. Если в кеше есть запись для запрошенного пользователя, то написать css в ответ и закончить обработку этого запроса;
  3. Если в кеше нет записи для запрошенного пользователя, то рендерим меньше для этого пользователя, сохраняем его в кеше и переходим к шагу 2.

Вы также должны удалить/обновить запись в кеше, когда пользователь изменит свою цветовую тему. Вы можете реализовать кэширование по своему усмотрению: в памяти, внутри базы данных или внутри статических файлов с именами (например) типа %userId%.css.

Вариант 2 Вместо того, чтобы рендерить меньше на стороне сервера (и потреблять ресурсы сервера), вы можете динамически рендерить меньше на стороне клиента. Пример: http://jsbin.com/wiqosutexe/5/edit?html,js,output

  1. Включите lessjs http://lesscss.org/#download-options;
  2. Предоставить меньше шаблона клиентскому скрипту (получить с помощью ajax, включить в сам скрипт или как-то еще);
  3. Используйте пользовательские настройки, чтобы заменить шаблон меньше.
  4. Рендеринг шаблона и вставка результатов (обычный css) в динамически создаваемый тег стиля.
person rtf_leg    schedule 24.02.2015
comment
в основном у пользователя wldnt есть возможность изменить тему. я имею в виду, что когда пользователь будет использовать example.com/login/salman, он получит свои последние изменения ( цвет, цвета значков шрифта), поэтому, если я выберу вариант 2, это означает, что пользователь сначала получит цвета по умолчанию, а затем получит предпочитаемую тему. и я не могу использовать кеш, так как не знаю, когда пользователь внес изменения в свою тему. вот почему я предпочитаю делать это на стороне сервера, меньше меняя на css и получая его при каждом F5, что вы говорите, это обычный способ сделать это /? - person Salman; 25.02.2015
comment
Да, вариант 2 больше подходит для одностраничного приложения (где страница редко перезагружается). Если вы реализуете старомодное веб-приложение, используйте вариант 1. Если вы не можете определить, когда пользователь меняет настройки своей темы, вы можете реализовать простой кеш, в котором каждая запись устаревает через N минут. - person rtf_leg; 25.02.2015