问题:我必须允许用户使用 spectrum.js 根据他们的喜好为按钮、图标、文本颜色设置不同的颜色
我尝试使用 dotless 解决这个问题,因为我创建了一个 .less 文件并添加了所有值。现在的问题是我必须根据 loggedInuser 从数据库中获取值并且必须动态更改
@back-color: blue;
@font-color: red;
不同的值,这必须在运行时而不是编译时完成。我知道这会让我付出一些延迟,但我不知道如何以其他方式解决它。
我一直在考虑不同的解决方案而不是拥有更少的文件为什么不节省时间我创建一个保存在数据库中的 css 文件并且当用户登录时创建一个 css 文件并注入(inject)到标题中
<link href="~/Content/dynamic.css" rel="stylesheet" />
有人可以帮助我或对此有任何建议吗??
任何帮助将不胜感激
最佳答案
选项 1 为资源实现特殊处理程序,代表用户自定义的 css。 此处理程序必须:
- 查找(通过 userId)以缓存已呈现较少(即 css)的存储位置;
- 如果缓存中有请求用户的条目,则将css写入响应并完成对该请求的处理;
- 如果缓存中没有请求用户的条目,则为该用户渲染较少的内容,将其存储在缓存中并转到第 2 步。
当用户更改其颜色主题时,您还应该删除/更新缓存条目。 您可以根据需要实现缓存:在内存中、数据库内部或命名为(例如)如 %userId%.css 的静态文件中。
选项 2 与其在服务器端渲染更少(并消耗服务器资源),不如在客户端动态渲染更少。 例如:http://jsbin.com/wiqosutexe/5/edit?html,js,output
- 包含lessjs http://lesscss.org/#download-options ;
- 为客户端脚本提供更少的模板(使用 ajax,包含在脚本本身或其他方式中);
- 使用用户偏好对 less 模板进行替换。
- 呈现模板并将结果(纯 css)插入到动态创建的样式标签中。
关于css - 在 .net 中动态更改 less 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28704898/