
什么是标记模板文字?
带标签的模板文字涉及以函数为前缀的模板文字,称为标签。该函数可以处理和操作文字的内容。这是一个简单的例子:
| 1 2 3 4 5 6 7 8 9 | 
functiontag(strings, ...values) {
     console.log(strings);
     console.log(values);
     return'processed string';
 }
 
 constname = 'alice';
 constgreeting = tag`hello, ${name}! how are you?`;
 console.log(greeting);
 | 
 
标记模板文字的用例
- 国际化(i18n)
带标签的模板文字可以根据用户的区域设置动态翻译字符串。这是使用日语的示例:
| 1 2 3 4 5 6 7 8 9 10 11 12 | 
functioni18n(strings, ...values) {
     consttranslations = {
         'hello, ': 'こんにちは、',
         '! how are you?': '!元気ですか?',
     };
 
     returnstrings.reduce((result, str, i) => result + translations[str] + (values[i] || ''), '');
 }
 
 constname = 'アリス';
 constgreeting = i18n`hello, ${name}! how are you?`;
 console.log(greeting); 
 | 
 
2. 自定义字符串格式
他们还可以实现自定义格式化逻辑,例如转义 html。
| 1 2 3 4 5 6 7 8 | 
functionescapehtml(strings, ...values) {
     constescape = (str) => str.replace(/&/g, '&').replace(/, '/g, '>');
     returnstrings.reduce((result, str, i) => result + str + escape(values[i] || ''), '');
 }
 
 constuserinput = '<scrIPt>alert("XSS")</script>';
 constsanitized = escapeHTML`user input: ${userInput}`;
 console.log(sanitized); 
 | 
 
结论
标记模板文字为 Javascript 中的动态字符串操作提供了多功能工具。它们可以简化国际化和自定义字符串格式等任务,从而产生更具表现力和可维护的代码。