Diving Into Template Strings with ECMAScript 6
With the exciting beta release of ECMAScript 6, we thought it would be fun to play with one of its boasted features and provide a little tutorial. Template strings are strings that allow for embedded expressions.
The Template Strings feature brings a lot of goodies to JavaScript strings and also helps us to eliminate extra libraries. It is supported by Chrome 41+, IE Tech Preview, Firefoz 35+ and also io.js. Most of the major ES6 transpilers also support this feature letting us start to use it in production immediately.
For template strings, we use the back-tick (` `) character instead of the regular single or double quotes.
Multiline String
Normally, we would use one of the following syntax to create a multiline string:
var string1 = 'This is line 1\n\ This is line 2';
// or
var string2 = 'This is line 1\n' + 'This is line 2'
Now, with template strings, any new line character in source code is treated as an actual new line character. The code can be written as:
var string1 = `This is line 1 This is line 2`;
Using template strings, we can not substiute variables on the runtime. To use this feature, wrap the variable name inside ${} in the string template:
var a = 10, string=`Value of a is ${a}`; console.log(string); // Value of a is 10This can also be used for expressions:
var a = 10, string = `a times 10 is ${a*10}`;
console.log(string);
// a times 10 is 100function sum (a, b) { return a + b; }var string2 = `10 + 20 = ${sum(10, 20)}`; console.log(string2); // 10 + 20 = 30Tagged Templates
Tag is a function that has the ability to intercept and process templates. Tag is a function which gets the individual string fragments in a template as the first argument and variables as other arguments:
function tagFn (strings, ...value) { console.log(strings[0]);// "10 + 20 = " console.log(values[0]);// 10 console.log(values[1]); // 20
return `something else`; }
var a = 10, b = 20; tagFn` 10 * 20 = ${a+b}` // something elseThis is a pretty powerful feature and can be used for purposes like sanitization of HTML, i18n or something similar.
Originally published at blog.inrhythm.com.