JavaScript中如何将文本包裹在反引号中构造GraphQL查询
问题场景
需要将外部传入、无法控制赋值来源的变量内容包裹在反引号(``)内,构造合法的GraphQL查询语句,初始示例代码如下:
let x = "hello" console.log(x) // 期望输出 `hello`
实现方案
不需要改动x本身的赋值逻辑,只需要在构造查询语句的环节,给x的内容前后拼接反引号即可,两种常用写法效果完全一致:
- 普通字符串拼接:用单/双引号声明字符串,反引号作为普通字符直接拼接,不需要额外转义
let x = "hello" const wrappedContent = '`' + x + '`' console.log(wrappedContent) // 输出 `hello`
- ES6模板字符串写法:模板字符串本身用反引号标识,内部要输出反引号需要加反斜杠转义
let x = "hello" const wrappedContent = `\`${x}\`` console.log(wrappedContent) // 输出 `hello`
避坑提示
- 如果x的内容本身包含反引号字符,包裹前一定要先做转义,不然拼出来的GraphQL语句会直接报语法错误,转义逻辑参考:
const safeContent = x.replace(//g, '\'),转义完成后再执行包裹操作即可 - 存在独立文件里的长查询语句,读取内容赋值给变量后,直接套用上述逻辑包裹就能拼入请求体,不需要修改独立文件内的原有内容格式
内容的提问来源于stack exchange,提问作者sarangkkl
相关产品推荐
相关产品推荐

