我想将 .less 参数存储在数据库中,一个示例用例可能是每个用户根据他或她的喜好改变颜色。
我认为最好的方法是解析所有 .less 文件以获取参数,然后用户可以针对用户设置将保存在数据库中的参数。当请求较少的文件时,处理程序重载可以查询数据库的参数。然后处理程序可以输出带有参数集的 css。
问题: - 如何获取 .less 文件并获取参数列表?- 如何获取 .less 文件的参数数组(键值对)并输出 css?
全部使用无点框架。
可能是迟到的回复,但我们做了与您的要求类似的事情,我们根据存储在数据库中的用户自定义颜色。
我们的解决方案是将自定义代码添加到 dotless 的源代码中,我相信这里有https://github.com/dotless/dotless
所以在解析过程中,它只是字符串替换了我们想要替换的部分。这种方法的唯一缺点是获取新的无点 dll 的更新版本,我们每次都需要重新合并我们的源。
编辑 这是一个示例代码片段:
dotless.Core.Utils.HslColor hslcolor = dotless.Core.Utils.HslColor.FromRgbColor( new dotless.Core.Parser.Tree.Color( "187AAB" );
hslcolor.Lightness = 0.93;
var hexString = '#' + ( hslcolor.ToRgbColor().RGB.Select( i => ( ( int )i ).ToString( "X2" ) ).Aggregate( ( a, b ) => a + b ) ).ToLowerInvariant();
var resultColor = hexString;
如果您在 .Net 中执行此操作,则 dotless 允许您指定一个插件,该插件可以作为访问者在评估之前运行。这会访问不太抽象的语法树中的所有节点,因此可以轻松确定所有变量。Dotless 还允许指定允许您生成变量文件的模式。
但那是 ott.. 您可能需要考虑将数据库中的所有变量存储为您的“主副本”,并避免解析较少的变量。