相关疑难解决方法(0)

将字符串转换为模板字符串

是否可以将模板字符串创建为通常的字符串

let a="b:${b}";
Run Code Online (Sandbox Code Playgroud)

然后将其转换为模板字符串

let b=10;
console.log(a.template());//b:10
Run Code Online (Sandbox Code Playgroud)

没有eval,new Function以及动态代码生成的其他方法?

javascript eval ecmascript-6 template-strings

128
推荐指数
11
解决办法
5万
查看次数

可以在运行时(或重用)替换ES6模板文字吗?

tl; dr:是否可以制作可重复使用的模板文字?

我一直在尝试使用模板文字,但我想我只是没有得到它,现在我感到沮丧.我的意思是,我认为我得到它,但"它"不应该是它如何工作,或它应该如何得到.应该有所不同.

我看到的所有示例(甚至是标记模板)都要求"替换"在声明时而不是运行时完成,这对我来说对于模板来说似乎完全没用.也许我很疯狂,但对我来说,一个"模板"是一个包含令牌的文档,当你使用它时,它们会被替换,而不是在你创建它时,否则它只是一个文档(即一个字符串).模板与令牌一起存储为令牌,当您评估它们时,将评估这些令牌.

每个人都引用了一个可怕的例子,类似于:

var a = 'asd';
return `Worthless ${a}!`
Run Code Online (Sandbox Code Playgroud)

这很好,但如果我已经知道a,我会return 'Worthless asd'或者return 'Worthless '+a.重点是什么?认真.好吧,重点是懒惰; 更少的优点,更多的可读性.大.但那不是模板!不是恕我直言.MHO就是最重要的!问题,恕我直言,模板在声明时被评估,所以,如果你这样做,恕我直言:

var tpl = `My ${expletive} template`;
function go() { return tpl; }
go(); // SPACE-TIME ENDS!
Run Code Online (Sandbox Code Playgroud)

由于expletive未声明,因此输出类似的内容My undefined template.超.实际上,至少在Chrome中,我甚至无法声明模板; 它会抛出错误,因为expletive没有定义.我需要的是能够在声明模板后进行替换:

var tpl = `My ${expletive} template`;
function go() { return tpl; }
var expletive = 'great';
go(); // My great template
Run Code Online (Sandbox Code Playgroud)

但是,我不知道这是如何可能的,因为这些不是真正的模板.即使你说我应该使用标签,nope,它们也不起作用:

> explete = function(a,b) { console.log(a); …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 template-literals

98
推荐指数
13
解决办法
3万
查看次数

Javascript:如何使用带有JSON的模板文字?

我今天发现了Javascript ES6模板文字.只有一个字:太棒了!

问题:如何将模板文字存储和加载为JSON?我通过XHR加载一些文件,然后是一些JSON.parse()不支持`的文件",因此似乎无法直接在文件中保存模板文字.

目标:将此用于动态字符串和翻译,并摆脱令人困惑的东西,例如("Hello " + username + "! How are you?")需要为一条消息存储多个字符串,而是将我的东西保存得非常简单

`Hello, ${username}! How are you?`
Run Code Online (Sandbox Code Playgroud)

其中username指向具有相同名称的动态变量.那可能吗?如果是的话,如何实现这一目标?如果我必须使用函数以某种方式将字符串转换为模板文字,只要它不会对整体性能造成严重影响,这是没关系的,但我想至少避免eval.

javascript json template-literals

8
推荐指数
2
解决办法
7000
查看次数

如何使用动态值插入标记模板字符串?

我想插入一个模板字符串(在其他地方定义):

const url = `www.example.com/${query}/current.json`;
Run Code Online (Sandbox Code Playgroud)

带有动态值(例如“es6”):

"www.example.com/es6/current.json"
Run Code Online (Sandbox Code Playgroud)

例如,如果我有这样的事情:

function makeRequest(url, query){
  // how do I generate my final url, here from the url and query?
}

// somehwere else:
makeRequest(url, query)
Run Code Online (Sandbox Code Playgroud)

带标签的模板字符串和标签函数是正确的方法吗?我见过很多不同的例子,但没有一个适合这种特殊情况。

javascript ecmascript-6 template-strings tagged-templates

5
推荐指数
1
解决办法
1357
查看次数