所以我有这个string:
var name = "Chaim";
var templateStr = "Hello, my name is ${name}";
Run Code Online (Sandbox Code Playgroud)
如何将其转换为模板字符串,以便结果等于:
var template = `Hello, my name is ${name}`;
Run Code Online (Sandbox Code Playgroud)
有没有办法以编程方式构建模板文字?
假设我们有一个多行es6 Template-String来描述例如请求的一些URL参数:
const fields = `
id,
message,
created_time,
permalink_url,
type
`;
Run Code Online (Sandbox Code Playgroud)
有没有办法在反引号模板字符串中有注释?喜欢:
const fields = `
// post id
id,
// post status/message
message,
// .....
created_time,
permalink_url,
type
`;
Run Code Online (Sandbox Code Playgroud) 我理解ES6 标记模板的语法.我看不到的是实用性.什么时候比传递一个对象参数更好,比如jQuery的AJAX中的设置?$.ajax('url', { /*this guy here*/ })
现在我只看到棘手的语法,但我不明白为什么我需要/使用它.我还发现TypeScript团队选择在其他重要功能之前实现它(在1.5中).标记字符串模板背后的概念是什么?
我想在模板字符串周围添加"反引号" .
每次我尝试将它们包裹在字符串周围时,IntelliJ都会一直删除它们.
任何人都知道为什么会发生这种情况以及如何解决这个问题?
我添加了我的.vue文件的一小段代码片段,其中发生了问题.想象一下,html,js和css写在一个组件( .vue)文件中,由唯一标签(模板,脚本和样式标签)分隔.我正在使用带有Mac OS X 10.5+键盘映射的德语键盘布局.
import axios from "axios";
import 'vue-animate/dist/vue-animate.min.css';
export default {
name: 'hello',
data () {
return {
msg: `Service is <strong>ONLINE</strong> and <strong>READY</strong> to operate`,
clicked: false,
iconURL:"./../../static/img/meditate.svg",
meditationAction: this.activateMeditation,
backgroundImage: "",
room:"Bad"
}
},
methods:{
activateMeditation () {
this.clicked = !this.clicked;
axios.get(`http://localhost:5005/${this.room}/shuffle/on`).then(response => {
console.info("SUCCESSFULLY ACTIVATED SHUFFLE");
axios.get(`http://localhost:5005/${this.room}/volume/20`).then(response => {
console.info("SUCCESSFULLY SET VOLUME TO 20");
axios.get("http://localhost:5005/bad/sleep/900").then(response => {
console.info("SUCCESSFULLY SET SLEEP …Run Code Online (Sandbox Code Playgroud)javascript intellij-idea backticks ecmascript-6 template-strings
我prefer-template从eslint 得到了一个错误.对于变通方法,我更改了我的代码,在require函数内部使用了一个模板字符串,该函数嵌套在url函数内部,如下所示:
{
background: `url(${require(`../../assets/${edge.node.name.toLowerCase()}.png` center no-repeat`)})
}
Run Code Online (Sandbox Code Playgroud)
但是,这显然是错误的.这是我之前使用的代码,在require函数内部连接的加号而不是模板字符串.
{
background: `url(${require('../../assets/' + edge.node.name.toLowerCase() + '.png')}) center no-repeat`
}
Run Code Online (Sandbox Code Playgroud)
是否可以定义嵌套模板字符串?
我必须解决gettext识别ES6模板字符串的限制,并且我考虑将模板字符串的"非插值"作为编译步骤,以便在代码中只有"普通"字符串.
基本上我想要实现的是改变这一点
const adjective = 'wonderful'
const something = `Look, I am a ${adjective} string`
console.log(something)
> "Look, I am a wonderful string"
Run Code Online (Sandbox Code Playgroud)
进入这个
const adjective = 'wonderful'
const something = 'Look, I am a ${adjective} string'
console.log(something)
> "Look, I am a ${adjective} string"
Run Code Online (Sandbox Code Playgroud)
实现这一目标的一个残酷方法是使用sed,但它肯定不是更优雅(也可能是容易出错)
sed "s/\`/'/g" FILENAME
Run Code Online (Sandbox Code Playgroud)
想到任何更好,更清洁的想法?
javascript localization gettext ecmascript-6 template-strings
有没有办法打印(使用console.log)javascript模板字符串,在这种情况下应用替换,但在打印时考虑换行符'\n'?
例如,当我有以下内容时:
let someVar = 'a';
let tsString = `here goes ${someVar}
some other line
some other line`;
console.log(tsString);Run Code Online (Sandbox Code Playgroud)
我希望它使用换行符打印,而不是打印 \n。
我认为模板字符串和常规字符串之间可能存在一些转换,但我找不到它。
*** 编辑:它发生在终端上,而不是浏览器上。运行 NodeJS 应用程序。抱歉没有指定,我假设我想要的是特定于 JS 的,而不是节点的(至少是解决方案)。
在测试JavaScript ES6的新模板字符串时(在Firefox中,如果它很重要),我注意到它们的类型有些不一致.
我定义了一个自定义函数,如下所示:
function f(a) {
console.log(typeof(a));
console.log(a);
}
Run Code Online (Sandbox Code Playgroud)
首先,我使用模板字符串周围的括号测试了"正常"功能.
f(`Hello, World!`)
Run Code Online (Sandbox Code Playgroud)
正如所料,这产生了一种类型string并Hello, World!输出到控制台.
然后我调用函数速记,没有括号,并且发生了不一致.
f`Hello, World!`
Run Code Online (Sandbox Code Playgroud)
类型变为object,并Array [ "Hello, World!" ]输出到控制台.
使用第二种方法时,为什么模板字符串包含在数组中?这只是Firefox中的一个错误(毕竟ES6 是一个新标准)还是出于某种原因预期会出现这种情况?
根据MDN的说法,Template Strings 应该在Chrome中运行,并且扩展为Node.js所基于的V8; 但是当我尝试以下操作时出现语法错误:
var name = 'coffee';
console.log(`Hello, ${name}!`);
Run Code Online (Sandbox Code Playgroud)
运行node file.js只是结果SyntaxError: Unexpected token ILLEGAL
我需要启用某种标志才能使用此功能,还是只是在节点中没有实现?
有没有办法在模板字符串中做条件?
例如:
let x, y;
x = ...
y = ...
let templateString = `${x} ${y}`;
Run Code Online (Sandbox Code Playgroud)
如果y未定义,我不希望输出x之后的模板字符串中的空格.如何使用模板字符串实现这一目标?
这是唯一的方法吗?
let templateString = `${x}${y ? ' ' + y : ''}`;
Run Code Online (Sandbox Code Playgroud) javascript ×10
template-strings ×10
ecmascript-6 ×7
backticks ×2
node.js ×2
debugging ×1
gettext ×1
localization ×1