import { default } from "https://dotland.deno.dev/x/lodash_es@v0.0.2/src/template.js";
Creates a compiled template function that can interpolate data properties
in "interpolate" delimiters, HTML-escape interpolated data properties in
"escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
properties may be accessed as free variables in the template. If a setting
object is given, it takes precedence over _.templateSettings
values.
Note: In the development build _.template
utilizes
sourceURLs
for easier debugging.
For more information on precompiling templates see lodash's custom builds documentation.
For more information on Chrome extension sandboxes see Chrome's extensions documentation.
Examples
// Use the "interpolate" delimiter to create a compiled template.
var compiled = _.template('hello <%= user %>!');
compiled({ 'user': 'fred' });
// => 'hello fred!'
// Use the "interpolate" delimiter to create a compiled template. var compiled = _.template('hello <%= user %>!'); compiled({ 'user': 'fred' }); // => 'hello fred!'
// Use the HTML "escape" delimiter to escape data property values. var compiled = _.template('<%- value %>'); compiled({ 'value': '' }); // => '<script>'
// Use the "evaluate" delimiter to execute JavaScript and generate HTML. var compiled = _.template('<% _.forEach(users, function(user) { %><%- user %><% }); %>'); compiled({ 'users': ['fred', 'barney'] }); // => 'fredbarney'
// Use the internal print
function in "evaluate" delimiters.
var compiled = _.template('<% print("hello " + user); %>!');
compiled({ 'user': 'barney' });
// => 'hello barney!'
// Use the ES template literal delimiter as an "interpolate" delimiter. // Disable support by replacing the "interpolate" delimiter. var compiled = _.template('hello ${ user }!'); compiled({ 'user': 'pebbles' }); // => 'hello pebbles!'
// Use backslashes to treat delimiters as plain text. var compiled = _.template('<%= "\<%- value %\>" %>'); compiled({ 'value': 'ignored' }); // => '<%- value %>'
// Use the imports
option to import jQuery
as jq
.
var text = '<% jq.each(users, function(user) { %><%- user %><% }); %>';
var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
compiled({ 'users': ['fred', 'barney'] });
// => 'fredbarney'
// Use the sourceURL
option to specify a custom sourceURL for the template.
var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
compiled(data);
// => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
// Use the variable
option to ensure a with-statement isn't used in the compiled template.
var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
compiled.source;
// => function(data) {
// var __t, __p = '';
// __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
// return __p;
// }
// Use custom template delimiters. _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; var compiled = _.template('hello {{ user }}!'); compiled({ 'user': 'mustache' }); // => 'hello mustache!'
// Use the source
property to inline compiled templates for meaningful
// line numbers in error messages and stack traces.
fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '
var JST = {
"main": ' + _.template(mainText).source + '
};
');