less.js(1.3.0)を使用してクライアント側でCSSを解析する回数を減らしています。パーサのコールバックの中で、私は各変数の値を取得したい。私は成功せずに次のことを試みた。less.js - パーサーのコールバック内で変数値を取得
var data = "@colour: red; #example { background-color: @colour; }",
parser = new less.Parser({});
parser.parse(data, function (error, root) {
console.log(root.toCSS());
var varsDef = root.variables();
for (k in varsDef) {
console.log(varsDef[k]);
// how to get the value for the var?
//not working
console.log(varsDef[k].eval());
//not working
console.log(varsDef[k].toCSS());
//is an object but looking for a string value
console.log(varsDef[k].value);
//returns an empty string
console.log(varsDef[k].value.toCSS());
}
});
eval()もtoCSS()も結果がありませんでした。私はパーサの内部的な動作が少ないことを理解していません。各変数オブジェクトには、オブジェクトである変数プロパティvarsDef [k] .valueがあります。しかし、私は変数の文字列値が必要です。
誰も変数の値を文字列として取得する方法を知っていますか?値
varsDef[k].name
は、それが可変であるので、変数名
varsDef[k].toCSS()
は何も返さないでなければなりません
恐らくうまくいきません。 'varsDef [k] .value.toCSS() 'は、 "赤"の代わりに空の文字列を返します。 – Philipp
@luke、私は、クライアント側の 'less.js v2.1'でParserコンストラクタに空のオブジェクトを渡すことで' Ruleset'オブジェクトを得ることができました。 '(new less.Parser({}、{contents:{{ }}、{}})。parse(lessMarkup、function(err、ruleset){}) '。問題は 'lessMarkup'に' @ import'文があり、パーサーが失敗したときです –