动态改变无点参数

时间:2012-05-29 10:50:51

标签: c# .net less dotless

我想在数据库中存储.less参数,一个示例用例可能是每个用户根据自己的偏好更改颜色。

我认为执行此操作的最佳方法是解析所有.less文件以获取参数,然后用户可以设置将针对用户保存在DB中的参数。当请求less文件时,处理程序重载可以向DB查询参数。然后处理程序可以输出带有参数集的css。

问题: - 如何获取.less文件并获取参数列表? - 如何在.less文件中获取一系列参数(键值对)和输出css?

全部使用无点框架。

2 个答案:

答案 0 :(得分:3)

可能是迟到的回复,但我们做了类似于您的要求的事情,我们根据存储在数据库中的用户提供了自定义颜色。

我们的解决方案是在dotless的源代码中添加自定义代码,我相信{} {3}}

然后在解析过程中,字符串替换了我们想要替换的部分。这种方法的唯一缺点是获得我们需要每次重新合并源的新无点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;

答案 1 :(得分:2)

如果你在.Net中这样做,那么dotless允许你指定一个插件,可以在评估之前运行访问者。这会访问不太抽象的语法树中的所有节点,因此可以轻松确定所有变量。 Dotless还允许指定patamteres,允许您生成变量文件。

但这是ott ..您可能想要将所有变量存储在数据库中作为"主副本"并避免解析较少的。