字符串 和模板字符串

616 阅读2分钟

模板字符串是``包裹起来的东西,是es6的语法,
这个我目前是很少用的,之前在react里面用了一次,但也不知道到底是为什么。这里解一下惑。其实用这个呢主要是因为html不区分大小写,我们在写组件的时候使用模板字符串包裹一下,这样就避免了写组件html模板(也就是<template>的代替)时换行。在模板字符串中使用组件就避免了驼峰法-法的转换(后者还要用用)问题,但是呢,要注意我们在使用vue的template时就是默认用了字符串模板。不需要我们手动加`。

官网原话:
当使用 PascalCase (首字母大写命名) 定义一个组件时,你在引用这个自定义元素时两种命名法都可以使用。也就是说 和 都是可接受的。注意,尽管如此,直接在 DOM (即非字符串的模板) 中使用时只有 kebab-case 是有效的。

实际使用中,建议不要使用这个,因为部分浏览器在解析的时候还是会出现混乱的bug,IDE 仍然会通过语法高亮、tab 格式化、换行符等地方的问题折磨着你。所以还是老实点吧,除非是像react里面注册组件时必须套一下,其他的时候还是免了吧。
模板字符串的优点:主要是换行上
传统的JavaScript语言,输出模板通常是这样的写的。

$('#result').append(
   'There are <b>' + basket.count + '</b> ' +
   'items in your basket, ' +
   '<em>' + basket.onSale +
   '</em> are on sale!'
 );

上面这种写法相当繁琐不方便,ES6 引入了模板字符串解决这个问题。

$('#result').append(`
   There are <b>${basket.count}</b> items
    in your basket, <em>${basket.onSale}</em>
   are on sale!
 `);

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量

// 普通字符串
`In JavaScript '\n' is a line-feed.`
 
// 多行字符串
`In JavaScript this is
 not legal.`
 
console.log(`string text line 1
string text line 2`);
 
// 字符串中嵌入变量
let name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?

上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。

let greeting = `\`Yo\` World!`;
输入结果:`Yo` World!

如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。

$('#list').html(`
<ul>
  <li>first</li>
  <li>second</li>
</ul>
`);  

代码来自https://www.cnblogs.com/gaoya666/p/9071035.html
字符串 和模板字符串 和VUE里组件注册与使用时驼峰法-法的转换