我在我的asp.net网站上使用无点库来编译.less文件。我希望通过名称获得一些变量的值。
例如,我有这样的代码:
@FONT_SIZE: 10px;
@TEXT_COLOR: red;
那么,如何通过“FONT_SIZE”名称获取字体大小? 我在Env类中找到了FindVariable方法,但我不明白如何使用它。
答案 0 :(得分:1)
我已使用此代码解决了我的问题:
string GetLessVariableByName(string name, string lessContent) {
int optimisation = 1;
Func<IStylizer> defaultStylizer = () => new PlainStylizer();
Func<IImporter> defaultImporter = () => new Importer();
Func<Parser> defaultParser = () => new Parser(optimisation, defaultStylizer(), defaultImporter());
Func<Env> defaultEnv = () => { return new Env(); };
Env env = defaultEnv();
Parser parser = defaultParser();
var tree = parser.Parse(lessContent.Trim(), "tmp.less");
var rule = tree.Rules.ToArray()[0];
Node node = rule.Evaluate(env);
var variableValue = tree.Variable(name, node);
return variableValue == null ? null : variableValue.Value.ToString();
}
答案 1 :(得分:0)
我想知道你的环境是否是静态的(需要读取你的价值)。我认为您应该将较少的文件作为文本阅读,并使用正则表达式来获取您的价值。 请参阅:Import LESS from server如何阅读较少的文件。 这里将讨论同样的问题:https://groups.google.com/forum/#!topic/dotless/V3SROjkTpM8
答案 2 :(得分:0)
是的,我会用:
int optimisation = 1;
Func<IStylizer> defaultStylizer = () => new PlainStylizer();
Func<IImporter> defaultImporter = () => new Importer();
Func<Parser> defaultParser = () => new Parser(optimisation, defaultStylizer(), defaultImporter());
Func<Env> defaultEnv = () => { return new Env(); };
Env env = defaultEnv();
Parser parser = defaultParser();
var tree = parser.Parse(lessContent.Trim(), "tmp.less");
var rule = tree.Rules.ToArray()[0];
Node node = rule.Evaluate(env);
问题,来自var rule = tree.Rules.ToArray()[0]的ToArray()来自哪里?线?
谢谢, 杰森