如何将less.js解析器结果提取为对象,而不是使用.toCSS()编译的CSS?

如何将less.js解析器结果提取为对象,而不是使用.toCSS()编译的CSS?,less,Less,我想知道是否有一种方法可以将较少的解析结果作为对象而不是编译的CSS? 在使用示例中,我们有: var parser = new(less.Parser); parser.parse('.class { width: (1 + 1) }', function (err, tree) { if (err) { return console.error(err) } console.log(tree.toCSS()); }); 这很好,但我需要使用JavaScript中设置的“原

我想知道是否有一种方法可以将较少的解析结果作为对象而不是编译的CSS? 在使用示例中,我们有:

var parser = new(less.Parser);

parser.parse('.class { width: (1 + 1) }', function (err, tree) {
    if (err) { return console.error(err) }
    console.log(tree.toCSS());
});
这很好,但我需要使用JavaScript中设置的“原始”规则做一些工作。如何访问作为对象设置的规则。例如:

var rules_set = {
selector:'xxxxxxx'
property1: 'xcv'
.
.
.
propertyX: ''
}

提前谢谢

树对象实际上是包含解析结果的对象,它包含表示所有未解析实体的数组/对象,例如
树.规则
等(您可以通过一些javascript调试器(例如浏览器的内置调试器)查找所需内容)

当然,这些“解析实体”是用LESS自己的内部格式表示的(通常它是每个语言单元/结构的专用对象,即
tree.Value
tree.Rule
tree.Mixin
tree.Variable
等)


至于以上所有的文档,显然没有“LESS编译器内部参考指南”,LESS内部的唯一文档是源代码本身。

上面的示例失败,出现了“无法读取未定义的属性'cnents'错误”。以下代码似乎适用于2.5.0以下版本:

var parser = new(less.Parser)({}, {contents: {}}, {
    relativeUrls: true,
    rootpath: "/",
    filename: 'main.less'
});
parser.parse('x {y: url("../z.png")}', function (e, tree) {
   console.log(tree);
});

没错,我看到tree.rules包含了我在浏览它(使用开发工具)时要查找的内容,但关键是树结构发生了变化,并且希望构建一致的提取器函数!这就是为什么我要求内部和结构细节来完成它。如果你有这样的信息,它将帮助@在
函数(err,Tree)
回调中获取LiliputFX树结构后,不会更改它。也就是说,在调用
tree.toCSS()
之前,您可以修改所有这些内容(或者使用原始
toCSS
作为参考编写您自己的
towhater
函数):)确保在我在回调中得到它之后,它不会改变……我已经记住树结构是依赖于内容的。解析不同的LES将导致不同的树结构。我正在寻找一种使用解析器结果的方法!我想将它们存储在DB中,但不是作为无用字符串…“我想将它们存储在DB中,但不是作为无用字符串…”-因此,您必须编写自己的函数,将解析的树结构转换为“不那么无用”字符串。LESS没有任何功能将解析的树转换为CSS之外的任何内容,因为它本身并不需要这样的功能。虽然我想知道在数据库中存储中间解析器结果的目的是什么。。。(你能不能只存储输入较少的字符串本身?它仍然很奇怪,但至少没有那么复杂)。谢谢!接受答案…目的是减少使用“纯”CSS解析器,因为它已经加载,并跳过实现我自己的(或使用/加载可用的外部解决方案)。该应用程序关心最终的CSS,因此它需要将其存储在db中的对象形式中,以便在属性级别(而不是工作表级别)作为字符串访问。再次感谢!