口水粉笔,通过方法传递字符串模板

时间:2019-06-10 12:32:37

标签: javascript node.js

我创建了一个类来处理我的通知。为了更改文本颜色,我正在使用的程序包接受以下内容:

const chalk = require('chalk');

chalk`{red This text will be red.}`;

但是,我现在已将此字符串模板传递给一个方法,该方法随后将其传递给粉笔,但是,粉笔包未解析字符串模板。因此,日志不显示颜色,而只是显示传入的字符串。

const log = require('./gulp-includes/log');

let test = 'helloworld';
log.all({
    message: `{red This text will be read. ${test}}`
});

gulp-include / log.js

const settings = require('./settings.js');
const chalk = require('chalk');
const log = require('fancy-log');
const notifier = require('node-notifier');

class Log
{
    all(params) {
        this.log(params);
    }
    log(params) {
        log(chalk`${params.message}`);
    }

}
module.exports = new Log();

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

要使chalk类中的Log解析字符串模板,您需要手动模拟tagged template literals-编写自己的标记函数。

幸运的是,在这种情况下,字符串模板中的表达式${test}首次出现时已经被求值。因此,传递给chalk的唯一参数是半解析的字符串,例如'{red This text will be read. helloworld}'${params.message}的值),这使事情变得容易得多。

Log类中,可以通过以下方法模拟标记有chalk的模板文字:

log(params) {
  let message = params.message;
  let options = [message];
  options.raw = [message];
  log(chalk(options));
}