Javascript 在handlebar.js helper方法中编译LESS

Javascript 在handlebar.js helper方法中编译LESS,javascript,meteor,less,handlebars.js,Javascript,Meteor,Less,Handlebars.js,这是一个Meteor.js应用程序。我需要将用户定义的自定义CSS样式注入到页面中。更好的是,我需要解析这个CSS,重新格式化它,添加一些额外的样式,然后将它注入到页面中 把手用作视图样板。因此,在模板中,我有以下内容: <style id="custom_styles"> {{#parseLess}} {{{custom_css}}} {{/parseLess}} </style> 在utils.parseLess方法中,我使用较少的CSS编译器编译最终的CSS。

这是一个Meteor.js应用程序。我需要将用户定义的自定义CSS样式注入到页面中。更好的是,我需要解析这个CSS,重新格式化它,添加一些额外的样式,然后将它注入到页面中

把手用作视图样板。因此,在模板中,我有以下内容:

<style id="custom_styles">
  {{#parseLess}} {{{custom_css}}} {{/parseLess}}
</style>
utils.parseLess
方法中,我使用较少的CSS编译器编译最终的CSS。以下是一个片段:

var parser = new less.Parser;
parser.parse(updatedSource, function (err, tree) {
    if (err) { return console.error(err) }
    console.log(tree.toCSS());
    return tree.toCSS();
});
现在棘手的部分是
parser.parse()
方法似乎是异步的。这打破了整个链条。回调方法被正确调用,但其内容从未传递回Handlebars模板

问题-如何将异步较少的解析器与Handlebars助手联系起来?或者,有没有更好的方法来处理我没有看到的事情

任何想法都将不胜感激

到目前为止,我的想法是:

  • 摆脱较少的解析——这不是个好主意,因为我依赖较少的解析,在这种情况下,我必须重新实现相同的解析
  • Get callback方法将呈现的内容直接插入到文档中——同样,这不是很好,因为它破坏了管道和模板模型方法

注意,在代码中,
返回tree.tocs()
不从
utils.parseLess
方法返回,而只从回调函数返回。我想你应该把它改写成这样(顺便说一句,调用
tree.tocs
两次也是个很糟糕的主意):

不,
parser.parse()不是异步的,它在回调函数返回时返回

var parser = new less.Parser;
parser.parse(updatedSource, function (err, tree) {
    if (err) { return console.error(err) }
    console.log(tree.toCSS());
    return tree.toCSS();
});
var parser = new less.Parser;
var cssResult;
parser.parse(updatedSource, function (err, tree) {
    if (err) {
        return console.error(err);
    }
    cssResult = tree.toCSS();
    console.log(cssResult);
});

return cssResult; // this is the return from utils.parseLess