【发布时间】:2017-09-01 20:59:38
【问题描述】:
我今天发现了Javascript ES6 Template Literals。就一个字:太棒了!
问题:如何将模板文字存储和加载为 JSON?我通过 XHR 加载了一些文件,然后是一些不支持 ` 而不是 " 的 JSON.parse(),因此似乎无法将模板文字直接保存在文件中。
目标: 将其用于动态字符串和翻译,并摆脱像 ("Hello " + username + "! How are you?") 这样的混淆内容,这需要为一条消息存储多个字符串,而是将我的内容精美保存很简单
`Hello, ${username}! How are you?`
其中用户名指向同名的动态变量。那可能吗?如果是,如何实现这一目标?如果我必须使用函数以某种方式将字符串转换为模板文字,这没关系,只要它不会严重影响整体性能,但我至少想避免eval。
【问题讨论】:
-
这些文字是代码而不是字符串。您不能将它们存储为 JSON。但你可以使用函数。
var tplHello = ({username}) => `Hello, ${username}! How are you?`并将其用作var data={ username: "foo" }, text = tplHello(data); -
@Thomas:谢谢。正如您所说,我似乎将模板文字与“动态字符串”混淆了。根据stackoverflow.com/questions/29771597/…,将字符串转换为模板文字将隐含地与 eval 相同,因为变量查找总是需要执行代码。似乎我对一个简单的翻译系统或“动态“字符串”的希望是由一个误解引起的。题外话:我想使用正则表达式替换字符串中的 %username (或类似的)会更适合我想要实现的目标。
标签: javascript json template-literals