??博主:小貓娃來啦
??文章核心:優(yōu)雅而高效的JavaScript——模板字面量
什么是模板字面量
- 模板字面量的定義
模板字面量是一種更強大、更靈活的字符串表示方式,使用反引號()包裹。與傳統(tǒng)的字符串表示方式相比,模板字量允許在字符串中插入變量、表達式和原始字符串,并且支持多行文本的處理。
- 模板字面量的特點
- 使用反引號(`)包裹字符串,使得字符串更清晰易讀。
- 使用
${}
語法可以在字符串中插入變量和表達式。- 支持多行文本的處理,不再需要手動添加換行符。
使用模板字面量插入變量
- 使用
${}
語法插入變量
使用${}
語法可以在模板字面量中插入變量,例如
const name = 'Alice';
const message = `Hello, ${name}!`;
console.log(message); // Hello, Alice!
- 嵌套插入變量
模板字面量允許在${}
語法中嵌套插入變量,例如:
const = 'John';
const lastName = 'Doe';
const fullName = `${firstName} ${lastName}`;
const message = `Hello, ${fullName}!`;
console.log(message); // Hello, John Doe!
- 插入表達式
除了插入變量,模板字面量還可以插入任意的JavaScript表達式,例如:
const num1 = 5;
const num2 = 10;
const sum =The sum of ${num1} and ${num2} is ${num1 + num}.`;
console.log(sum); // The sum of 5 and 10 is 15
- 插入原始字符串
在模板字面量中插入原始字符串時,可以使用${}
語法的原始字符串形式,例如:
const rawString = String.raw`HelloWorld`;
console.log(rawString); // Hello\nWorld
處理多文本
- 使用模板字面量的多行文本
模板字面量可以直接處理多行文本,不再需要手動添加換行符,例如:
const message = `This a
multi-line
text.`;
console.log(message);
// This is a
//-line
// text.
- 多行文本的縮進和格式化
模板字面量支持多行文本的縮進和格式化,可以使用${}
語法嵌套實現(xiàn),例如:
const indentExample = `
This is an example
of ind text.`;
console.log(indentExample);
// This is an example
// of indented text.
- 多行文本轉(zhuǎn)義字符
在模板字面量中使用多行文本時可以使用轉(zhuǎn)義字符來處理特殊字符,例如:
constExample = `This is a\`
multi-line\`
text.`;
console.log(escapeExample);
// This is a
// multi-line
// text.
模板字面量的高級應(yīng)用
標(biāo)簽?zāi)0遄至?/h3>
標(biāo)簽?zāi)0遄置媪渴且环N使用自定義函數(shù)處理板字面量的方式,可以在${}
語法前添加一個函數(shù)名作為前綴,例如:
function greeting(strings, ...values) {
return `${strings[0]}${values[0].toUpperCase()}strings[1]}`;
}
const name = 'alice';
const message = greeting`Hello ${name}!`;
console.log(message); // Hello, ALICE!
自定義模板字面量函數(shù)
可以自定義模板字面量函數(shù)來處理特定的邏輯,例如:
function multiplier(strings, ...values) {
const num = Number(values[]);
return strings[0] + (num * 2) + strings[1];
}
const value = 5;
const result = multiplier`The result is: ${value}.`;
console.log(result); // The result is: 10.
常見應(yīng)用場景
拼接字符串
模板字面量可用于更簡潔拼接字符串,特別是含有變量和表達式的情況,例如:
const name = 'Garfield';
const age = 30;
const message = `My name is ${name} and I am ${age} years old.`;
console.log(message); // My name Garfield and I am 30 years old.
HTML模板
const data = { name: 'Alice', age: 30 };
const html = `
<div>
<h1>${data.name}</h1>
<p>Age: ${data.age}</p>
</div>
`;
console.log(html);
// <div>
// <h1>Alice</h1>
// <p>Age: 30</p>
// </div>
SQL查詢
在構(gòu)建SQL查詢時,模板字面量可用于拼接SQL語句和插入變量,例如:
const firstName = '菲貓';
const lastName = '加';
const query = `
SELECT *
FROM users
WHERE first_name = '${firstName}'
AND last_name = '${lastName}'
`;
console.log(query);
// SELECT *
// FROM users
// WHERE first_name = '菲貓'
// AND last_name = '加'
在這或許有很多沒有接觸過sql語句的程序員
那么我稍微解釋一下:
SELECT * FROM users WHERE first_name = ‘菲貓’ AND last_name = ‘加’ 這是個SQL查詢語句
SELECT
表示查詢*
表示所有,FORM
表示來自,users
是數(shù)據(jù)表的名字,WHERE
是條件語句first_name = 'Alice' AND last_name = 'Smith'
是查詢條件
翻譯為:在用戶表中查詢first_name(名)是菲貓,并且 last_name(姓氏)是加的用戶的所有信息
文件路徑拼接
模板字面量還可以方便地拼接文件路徑,特別是需要插入變量的情況,例如:
const dir = 'path/to';
file = 'index.html';
const filePath = `${dir}/${file}`;
console.log(filePath); // path/to/index.html
與統(tǒng)字符串拼接的比較
- 效率比較
與傳統(tǒng)字符串拼接相比,模板字面量通常在運行時更高效。由于模板字面量的編譯階段已經(jīng)將變量和表達式嵌入到字符串中,不需要運行時的拼接操作,因此更快速。
- 可讀性比較
模板字面量可以更清晰地展示字符串中的變量和表達式,使得代碼更易讀和維護。傳統(tǒng)字符串拼接可能會導(dǎo)致代碼難以閱讀和理解,尤其是在包含多個變量和表達式的情況下。
- 安全性比較
使用模板字面量可以更有效地避免注入攻擊。由于模板字面量對變量和表達式的處理是在編譯階段完成的,可以確保在運行時不會執(zhí)行不安全的代碼。
關(guān)于模板字符串就介紹到這里啦文章來源:http://www.zghlxwxcb.cn/news/detail-725704.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-725704.html
到了這里,關(guān)于優(yōu)雅而高效的JavaScript——模板字面量的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!