将复杂代码组合为 javascript 中的字符串

Composing complex code as string in javascript

我正在使用自己的 JavaScript 代码设计自定义 Blockly 块,当我尝试输出为字符串的代码是一个单行代码时,这并不复杂,但是当代码我正在尝试关联到我的自定义块,通过连接变量、单引号、双引号来完成它,它开始变得混乱,并生成带有难以排除故障的语法错误的代码。

这是一个简单块的代码,我现在这样做的方式:

this.EnableAllItems = function (block) {
    var target_field = block.getField('target_field');
    var code = "$('#" + target_field.getText() + " option').removeAttr('disabled');\r\n";
    return code;
}

这是我用来在 select 输入中启用所有 options 的块。

适用于简单代码。但我想做的是按字面意思编写 JS 代码,稍后将其转换为字符串。

这样的事情是否可能:

function enableItemsLogic(targetField) {
    $('#' + targetField + ' option').removeAttr('disabled'); 
} 

this.EnableAllItems = function (block) {
    var target_field = block.getField('target_field');
    //somehow return the above function as code with the literal parameter filled in ?
    var code = enableItemsLogic(target_field.getText());
    return code;
}

是否有任何 JS 技巧可以让我做到这一点?

您可以为此使用模板文字(如果您转译 JavaScript,这是一个 ES5 功能)。

const name = "Francis";
const foo = `Hello my name is: ${name}`;

在此处阅读更多内容:https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Template_literals